使用oneToMany正确添加和删除JPA

时间:2016-08-31 06:27:08

标签: java jpa

给出以下结构

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)

1 个答案:

答案 0 :(得分:0)

如果这足够,完全取决于您的配置。例如,实体管理器中的附加或分离对象。我假设您已将对象分离(在我们的项目中通常就是这种情况)。

  

这足够吗?或者我将它添加到“两个”方面?

不,不。

这还不够,你可以,但不必将它添加到双方。您还可以重新加载分离的对象Company,它应该包含新客户。

删除工作方式相同,重新加载公司对象时应该删除。

原因很简单:唯一的映射是在客户中,使用company_id。如果这种情况消失了,关系就会消失,但你仍然需要考虑缓存和记忆。