2

重複の可能性:
2 つのエンティティ間の JPA OneToOne および ManyToMany

私は役に立たない解決策を探しました。私の質問は、「従業員」と「部門」の 2 つのエンティティがあります。多くの従業員が 1 つの部門に属し、1 つの部門が 1 人の従業員によって率いられています。@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();

... 
}

aAnnotation と作業を同時に行うことは可能ですか?

4

1 に答える 1

0

する必要があります。

  1. のインスタンスを作成するか、JPAに作成を依頼すると、...をインスタンス化するaを無限にインスタンスEmployeeEmployeeしようとします。DepartmentEmployee

    クラス定義から= new Employee()and=式を削除します。new Department()適切なセッターメソッドを使用します。

  2. 1対1の関係を定義するSQL列がテーブルに定義されていることを確認します。Department具体的には、Departmentテーブルには。を参照する外部キーがありますEmployee。これの基礎は、SQL外部キーを持たない@OneToOne(mappedBy="...")JPAエンティティで定義され、SQL外部キーを持っているエンティティを参照する必要があるということです。


それはさておき、間に問題があります

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

および対応するフィールドDepartment

@OneToOne
public Employee deptHead = new Employee();

deptheadとの間にはそれぞれ大文字と小文字の不一致がありdeptHeadます。

于 2012-10-21T14:38:38.663 に答える