如何为包含同一对象的两个实体在数据库中存储相同的表行? 以下说明我的无效尝试。jpa坚持与两个所有者相同的对象
@Entity
public class Employee
{
@ManyToOne(cascade=CascadeType.ALL)
private Department department;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
...
<Getters and setters for all members here>
...
}
@Entity
public class Department
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@OneToMany(mappedBy="department")
private Collection<Employee> employees;
...
<Getters and setters for all members here>
...
}
在Servlet我尝试以下方法:
Department department=new Department();
department.setName("HR");
Employee employee1=new Employee();
employee1.setName("Bob");
employee1.setDepartment(department);
Employee employee2=new Employee();
employee2.setName("Anna");
employee2.setDepartment(department);
...
em.persist(employee1);
em.persist(employee2);
当我这样做,我得到的时候和Employee2是坚持,对部门的主键是已经在数据库中,因为它试图添加错误第二次是同一个部门。
如何让两位员工指向数据库中的同一行。
我是否需要通过将员工添加到部门来实现这一目标而从反面工作?
我觉得我在这里错过了一些基本的东西。
什么是确切的例外,发布它 – Ramanlfc
我没有看到被添加到Department.employees的Employee对象。 –
错过了看东西的JPA提供程序的日志... –