发布
社区首页 >问答首页 >为什么@OneToMany关系中的@ to方需要对@One方的引用?

为什么@OneToMany关系中的@ to方需要对@One方的引用?
EN

Stack Overflow用户
提问于 2018-01-20 08:13:36
回答 2查看 57关注 0票数 0

我刚刚花了两个小时的时间,想知道为什么@OneToMany关系中的@Many方总是包含所有者的空id值。我有两个Hibernate实体,User和Purchase。一个用户可以有多个购买,一个购买只能属于一个用户。以下是我的代码片段

//在实体用户

代码语言:javascript
代码运行次数:0
复制
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private Set<Purchase> purchases = new HashSet<Purchase>();

//在实体购买

代码语言:javascript
代码运行次数:0
复制
@ManyToOne(fetch = FetchType.EAGER)
private User user;

现在,当我将一个新的购买添加到用户的“购买”设置中时,我意识到用户的Id不会自动链接到相应的购买。我必须在这里手动调用方法setUser(User user):

// User类中

代码语言:javascript
代码运行次数:0
复制
    Purchase purchase = new Purchase();
    purchase.setUser(this);
    purchases.add(purchase);

为什么第二行是必要的?

EN

回答 2

Stack Overflow用户

发布于 2018-01-20 09:02:52

您需要一个单独的函数来链接用户到您的程序的其他部分。我不知道程序是由什么组成的,但请确保你有一个getter函数。

票数 0
EN

Stack Overflow用户

发布于 2018-01-21 15:48:25

您必须提交事务,以便Hibernate可以自动填充user字段。否则,Hibernate无法知道您的实体何时准备提交到数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48351301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档