JPA 2、Eclipse 链接 2.3.2
我试图用 two@ElementCollection
而不是 two的三元关系建模,@OneToMany
主要是这样我可以使联结对象 an@Embeddable
而不是 @Entity 并避免嵌套对象需要 an @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
,如果我使用类似的查询加载员工,即使我可以看到数据库查询实际上正在执行连接并且数据正在返回select e from Employee e left join fetch e.assignments
,关联的分配/项目对象也不会被加载。
上述映射以某种方式无法left join fetch
正确交互的原因是什么?
我用过left join fetch
更简单的@ElementCollection
映射没有问题,所以我想知道问题是什么。
谢谢!