首页 文章

JPA OneToOne和OneToMany在同一个实体上[重复]

提问于
浏览
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();

... 
}

是否可以同时使用aNnotation和work?

1 回答

  • 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();
    

    deptheaddeptHead 之间分别存在不匹配的情况 .

相关问题