如何在OneToMany关系中将null设置为外键列,Hibernate

时间:2016-03-20 13:51:00

标签: java mysql hibernate jpa

我有两个班级:用户和公司。

User
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "company_id")
public Company getCompany() {
    return company;
}

Company
@OneToMany(mappedBy = "company", fetch = FetchType.LAZY)
public List<User> getEmployees() {
        return employees;
}

当我删除Company时,我需要在User表中将外键company_id设置为null。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

通常,您描述的关系将使用引用constraint实体的外键上的User创建。这样您就无法将其设置为null。如果将其设置为null,它将变为orphaned行,这会导致数据库损坏。

另一方面,如果您需要两个实体与其连接分开存在,那么您的关系就不像您所描述的那样。

在这种情况下,公司和用户(人员?)似乎都需要存在而不必加入。我会建议一个新的实体,比如Employment。它有效地充当join table,因为它同时具有CompanyUser个ID,但它也可能包含更多信息,例如startdateenddatecurrent employer