Movie类有一个他的会话列表,我想同时保存存储在列表中的电影和他的会话。
这是我的代码
public class Movie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "movie_id")
private int movieId;
...
@OneToMany(mappedBy = "movie",cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Session> sessionList = new ArrayList<>();
}
public class Session {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "session_id")
private int sessionId;
...
@ManyToOne
@JoinColumn(name = "movie_id")
private Movie movie;
}
public void testAddMovie(){
Session session1 = new Session();
session1.setDay("Monday");
Movie movie = new Movie();
movie.setTitle("hello");
movie.getSessionList().add(session1);
movieDao.addMovie(movie);
}
insert
into
movies
(actors, .... ,title)
values
(?, ?, ?, ?, ..., ?, ?, ?, ?)
insert
into
sessions
(day, movie_id, time)
values
(?, ?, ?)
Hibernate不会引发异常,movie和session都成功地持久化了,但是表session中的外键'movie_id'始终显示为null。
那么问题出在哪里?当我只使用@onetomany而不使用@manytoone时,同样的测试工作正常,外键被成功添加。
在会话实体中,将de movie属性更改为:
@ManyToOne
@JoinColumn(name = "movie_id", foreignKey = @ForeignKey(name = "fk_session_movie."))
private Movie movie;
我有一个父表,它与一个子表有许多关联。 我试图用CriteriaBuilder编写一个查询,以限制从子表返回的结果。 我添加了一个谓词,类似于 如果父节点有一个子节点或子节点和子节点,则返回父节点,同时也返回所有子节点。 Hibernate使用我的谓词启动了第一个查询,但是第二个获取孩子的查询只使用了where子句中的JoinColumn,而没有包含它 思想? 我正在使用SetJoin 澄清:
问题内容: 我正在尝试使用JPA建立双向关系。我了解这是应用程序负责维护双方关系的责任。 例如,一个图书馆有多本书。在图书馆实体中,我有: 图书实体为: 不幸的是,OneToMany端的集合为空。因此,例如,对setLibrary()的调用失败,因为this.library.getBooks()。contains(this)导致NullPointerException。 这是正常行为吗?我应该自己
问题内容: 我有一个关于从子实体ir引用ParentEntities的问题,如果我有这样的事情: Parent.java: 和Child.java: 将创建以下表: 好的,到目前为止,一切都很好。但是,当涉及到使用Java的Reference时,我想,您可以做这样的事情。 这导致在数据库中: 但是事实并非如此,您必须明确地将“父级”设置为“子级”(我认为框架可能可以单独执行)。 因此,数据库中真正
问题内容: 我对父实体和子实体之间的简单映射有疑问。一切正常,只有当我从集合中删除子记录时,才会删除它们。 父母: 孩子: 如果我现在从childs集合中删除and child,它不会从数据库中删除。我尝试取消引用,但这也不起作用。 实体在Web应用程序中使用,删除是Ajax请求的一部分。按下保存按钮时,我没有已删除子项的列表,因此我无法隐式删除它们。 问题答案: JPA的行为是正确的( 按照规范
问题内容: 我将Spring和Hibernate用作JPA提供程序,并尝试获取@OneToMany(具有许多电话号码的联系人)以将外键保存在电话号码表中。从我的表单中,我得到一个Contact对象,其中有一个Phone(数字)列表。Contact可以正确持久保存(Hibernate从指定序列中获取PK)。电话(号码)列表也将保留正确的PK,但“联系人”表中没有FK。 希望我掌握了以上所有相关内容,
嗨,我正在学习Spring JPA使用OneToMany和ManyToOne双向关系,在一些示例中,我看到OneToMany和ManyToOne关系,当我在两个方面编写时,JPA添加一个新列作为外键列,并插入父表中的键值。但当我尝试我的时候,这一栏总是空白的。下面是我的代码的样子: 下面是我的Account.java模型: 下面是我的dealer.java模型: 这里是我的控制器: 然后将JSON