JPA @ManyToMany处理记录

时间:2016-06-06 13:54:55

标签: java jpa many-to-many

我有两个数据库表。 Enterpise 可以有多个员工员工可以在多个企业中使用。

Entrerprise.java

@Entity
public class Enterprise{
   @id
   public Long id;

   public String enterpriseName;

   @ManyToMany(mappedBy = "enterpriseList")
   public List<Employee> employeeList;
}

Employee.java

@Entity
public class Employee
{
    @id
    public Long id;

    public String firstName;
    public String lastName;
    public Integer age;

    @ManyToMany
    public List<Enterprise> enterpriseList;
}

如何更新 Enterprise Employee 之间的某些更改。考虑性能的最佳方式是哪种?

假设我想更新en Employee 实体并拥有一个包含关联企业ID的列表。我该怎么办?

修改

我举个例子: 在我的数据库中,我有4家企业

Ep1 -> id 1
Ep2 -> id 2
Ep3 -> id 3
Ep4 -> id 4

以及在 Ep2 中工作的员工。

现在员工 Ep1 Ep4 中获得了一些工作。 这意味着,我收到以下数据。

employeeID = 1
enterpriseList = [1,2,4]

现在,我可以使用更新查询吗?

我目前使用的解决方案是:

// get employee
Employee employee = entityHandlerService.getEmployeeById(employeeID);

// idList -> [1,2,4]
for(Long id : idList)
{
    // prevent duplicate
    if(employee.enterpriseList.stream().filter(e -> e.id.equals(id)).count() == 0)
    {
       // add enterprise to employee
       Enterprise enterpise = entityHandlerService.getEnterpriseById(id);
       employee.enterpriseList.add(enterprise);
    }
}

0 个答案:

没有答案