我刚刚花了两个小时的时间,想知道为什么@OneToMany关系中的@Many方总是包含所有者的空id值。我有两个Hibernate实体,User和Purchase。一个用户可以有多个购买,一个购买只能属于一个用户。以下是我的代码片段
//在实体用户
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private Set<Purchase> purchases = new HashSet<Purchase>();
//在实体购买
@ManyToOne(fetch = FetchType.EAGER)
private User user;
现在,当我将一个新的购买添加到用户的“购买”设置中时,我意识到用户的Id不会自动链接到相应的购买。我必须在这里手动调用方法setUser(User user):
// User类中
Purchase purchase = new Purchase();
purchase.setUser(this);
purchases.add(purchase);
为什么第二行是必要的?
发布于 2018-01-20 09:02:52
您需要一个单独的函数来链接用户到您的程序的其他部分。我不知道程序是由什么组成的,但请确保你有一个getter函数。
发布于 2018-01-21 15:48:25
您必须提交事务,以便Hibernate可以自动填充user
字段。否则,Hibernate无法知道您的实体何时准备提交到数据库。
https://stackoverflow.com/questions/48351301
复制相似问题