给出以下结构
class Company {
@OneToMany(mappedBy = "company", cascade = CascadeType.ALL, orphanRemoval = true)
List<Customer> customers;
}
class Customer {
@ManyToOne
@JoinColumn(name = "company_id")
private Company company;
}
1)创建公司:Company comp = new Company();
我现在的问题是如何正确添加客户:
Customer cust = new Customer();
cust.setCompany(comp);
这足够吗?或者我将它添加到“两个”方面?
cust.setCompany(comp);
company.getCustomers.add(cust)
相同的删除?说我想删除客户:
我删除了客户:entityManager.remove(cust)
。这够了吗?
或者我是否也需要company.getCustomers().remove(cust)
?
答案 0 :(得分:0)
如果这足够,完全取决于您的配置。例如,实体管理器中的附加或分离对象。我假设您已将对象分离(在我们的项目中通常就是这种情况)。
这足够吗?或者我将它添加到“两个”方面?
不,不。
这还不够,你可以,但不必将它添加到双方。您还可以重新加载分离的对象Company,它应该包含新客户。
删除工作方式相同,重新加载公司对象时应该删除。
原因很简单:唯一的映射是在客户中,使用company_id。如果这种情况消失了,关系就会消失,但你仍然需要考虑缓存和记忆。