问题描述
我一直在寻找无济于事的解决方案.我的问题是我有两个实体雇员"和部门"许多员工属于一个部门一个部门由一名雇员领导.随时都会出现错误,同时介绍@OneToOne和@OneToMany.这是代码
I've searched for a solution to no avail. My question isI have two entities "Employee" and "Department"Many Employees belongs to One DepartmentAnd One Department is headed by One Employee.Am getting errors anytime introduce both the @OneToOne and @OneToMany.This is the code
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();
...
}
是否可以同时具有注释和工作?
Is it possible to have both aNnotation and work at the same time?
推荐答案
应该是.
-
在创建或要求JPA创建
Employee
的实例时,Employee
会尝试实例化Department
,将Employee
...实例化为无穷大.
When you create, or ask JPA to create, an instance of
Employee
, theEmployee
attempts to instantiate aDepartment
, which instantiates anEmployee
..., to infinity.
从类定义中删除 = new Employee()
和= new Department()
表达式;使用适当的setter方法.
Remove the = new Employee()
and = new Department()
expressions from the class definition; use appropriate setter methods.
验证是否在 Department
表上定义了定义一对一关系的SQL列;特别是 Department
表具有一个引用 Employee
的外键.这样做的基础是,应在没有没有SQL外键的JPA实体上定义 @OneToOne(mappedBy ="...")
引用执行 的实体.
Verify that the SQL column defining the one-to-one relationship is defined on the Department
table; specifically the Department
table has a foreign-key referencing an Employee
. The basis for this is that the @OneToOne(mappedBy="...")
should be defined on the JPA Entity that does not have an SQL foreign key, referencing the entity that does.
此外,两者之间存在问题
That aside, there is an issue between
@OneToOne(mappedBy="depthead")
public Department headedBy = new Department();
以及部门
上的相应字段:
@OneToOne
public Employee deptHead = new Employee();
depthead 和 deptHead
之间的情况不匹配.
There's a mismatch in case between depthead
and deptHead
, respectively.
这篇关于同一实体上的JPA OneToOne和OneToMany的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!