【发布时间】:2018-01-21 15:48:25
【问题描述】:
我刚刚花了两个小时拔头发,想知道为什么 @OneToMany 关系中的 @Many 端总是包含所有者的空 id 值。 我有两个休眠实体,用户和购买。一个用户可以进行多次购买,一次购买只能属于一个用户。以下是我的代码的sn-p
//关于实体用户
@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);
为什么需要第二行?
【问题讨论】:
-
因为Many方是关联的拥有方,也就是Hibernate认为知道关联是否存在的关联方。
-
自从使用 JPA 之类的东西已经有一段时间了,但我很确定这在理论上可以像你解释的那样工作......如果我没记错的话,这应该是解决你问题的行(转到链接,因为这个问题不是那么容易解释)
@JoinColumn(name="CUST_ID",referencedColumnName="CUST_ID")javaworld.com/article/2077819/java-se/…