我有两个班级:用户和公司。
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。我怎么能这样做?
答案 0 :(得分:0)
通常,您描述的关系将使用引用constraint
实体的外键上的User
创建。这样您就无法将其设置为null
。如果将其设置为null,它将变为orphaned
行,这会导致数据库损坏。
另一方面,如果您需要两个实体与其连接分开存在,那么您的关系就不像您所描述的那样。
在这种情况下,公司和用户(人员?)似乎都需要存在而不必加入。我会建议一个新的实体,比如Employment
。它有效地充当join table
,因为它同时具有Company
和User
个ID,但它也可能包含更多信息,例如startdate
, enddate
和current employer
。