我找到了无效的解决方案。我的问题是 我有两个实体“员工”和“部门” 许多员工属于一个部门 One Department由One Employee领导。 随时都会出现错误,同时引入@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();
...
}
是否可以同时使用aNnotation和工作?
答案 0 :(得分:0)
应该是。
当您创建或要求JPA创建Employee
的实例时,Employee
会尝试实例化Department
,实例化Employee
。 ..,无限。
从类定义中删除= new Employee()
和= new Department()
表达式;使用适当的setter方法。
验证Department
表上定义了一对一关系的SQL列是否已定义;具体而言,Department
表具有引用Employee
的外键。这样做的基础是@OneToOne(mappedBy="...")
应该在JPA实体上定义不具有SQL外键,引用所做的实体。
除此之外,
之间存在问题@OneToOne(mappedBy="depthead")
public Department headedBy = new Department();
以及Department
上的相应字段:
@OneToOne
public Employee deptHead = new Employee();
depthead
和deptHead
之间的情况不匹配。