2

可能重复:
两个实体之间的 JPA OneToOne 和 ManyToMany

我一直在寻找无济于事的解决方案。我的问题是我有两个实体“员工”和“部门”许多员工属于一个部门,一个部门由一名员工领导。任何时候都会遇到错误,同时介绍@OneToOne 和@OneToMany。这是代码

public class Department {
@Required
public String deptName; 

@OneToMany(mappedBy="dept")
public List<Employee> employees = new ArrayList<Employee>();

@OneToOne
public Employee deptHead = new Employee();

    .....   

}

public class Employee{
@Required
public String surname;

@Required
public String othernames;   

@OneToOne(mappedBy="depthead")
public Department headedBy = new Department();

@ManyToOne
public Department dept = new Department();

... 
}

是否可以同时拥有注释和工作?

4

1 回答 1

0

应该。

  1. 当您创建或要求 JPA 创建 的实例时EmployeeEmployee尝试实例化 a Department(实例化Employee...)到无穷大。

    从类定义中删除= new Employee()and =new Department()表达式;使用适当的设置方法。

  2. 验证定义一对一关系的 SQL 列是否定义Department表上;具体来说,该Department表有一个外键引用Employee. 这样做的基础是@OneToOne(mappedBy="...")应该在没有SQL 外键的 JPA 实体上定义,引用具有.


除此之外,还有一个问题

@OneToOne(mappedBy="depthead")
public Department headedBy = new Department();

和上的相应字段Department

@OneToOne
public Employee deptHead = new Employee();

depthead和之间的情况deptHead分别不匹配。

于 2012-10-21T14:38:38.663 回答