JPA 2、Eclipselink 2.3.2
@ElementCollection
主に2つではなく2つで三項関係をモデル化しようとしているので、@ Entityの代わりに@OneToMany
junctionオブジェクトを作成し、ネストされたオブジェクトにを必要としないようにすることができます。@Embeddable
@Id
例えば
@Entity
public class Project {
@ElementCollection
@CollectionTable(name="assignment", joinColumns=@JoinColumn(name="project_id"))
public Set<Assignment> assignments;
}
@Entity
public class Employee {
@ElementCollection
@CollectionTable(name="assignment", joinColumns=@JoinColumn(name="employee_id"))
public Set<Assignment> assignments;
}
@Embeddable
public class Assignment {
@ManyToOne
@JoinColumn(name="employee_id")
public Employee employee;
@ManyToOne
@JoinColumn(name="project_id", insertable=false, updatable=false)
public Project project;
}
永続化するために、右を参照してAssignment
インスタンスをインスタンスに追加しています。これは正常に機能します。Project
Employee
さらに、Project
sのリストEmployee
も問題なく参照できます。
ただしleft join fetch
、のようなクエリを使用して従業員をロードすると、DBクエリが実際に結合を実行し、データが返されていることがわかりますが、select e from Employee e left join fetch e.assignments
関連付けられた割り当て/プロジェクトオブジェクトはロードされません。
どういうわけleft join fetch
か適切に相互作用しない上記のマッピングについてはどうですか?
left join fetch
私は問題なく単純なマッピングで使用した@ElementCollection
ので、問題は何であるか疑問に思います。
ありがとう!