给出以下结构
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();
我现在的问题是如何正确添加客户:
客户客户 = new Customer();
cust.setCompany(comp);
这足够了吗?或者我是否将其添加到“两侧”?
cust.setCompany(comp);
company.getCustomers.add(cust)
删除后同样薄吗?假设我要删除客户:
我删除了客户:entityManager.remove(cust)
。这足够了吗?
或者我还需要执行 company.getCustomers().remove(cust)
吗?
最佳答案
如果这就足够了,完全取决于您的配置。例如实体管理器中附加或分离的对象。我假设您已分离对象(在我们的项目中通常是这种情况)。
Is this sufficient? Or do I add it to "both" sides?
不,不。
还不够,可以,但不必两边都加。您还可以重新加载分离的对象公司,它应该包含新客户。
删除的工作方式相同,当您重新加载公司对象时,它应该消失。
原因很简单:唯一的映射是在客户中,使用company_id。如果这个消失了,那么关系就消失了,但您仍然需要考虑缓存和内存。
关于java - JPA 使用 oneToMany 正确添加和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39242209/