JPA 2,Eclipselink 2.3.2
我正在尝试使用两个@ElementCollection
而不是两个@OneToMany
模拟三元关系,因此我可以将联结对象设为@Embeddable
而不是@Entity,避免为嵌套对象提供@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
引用Employee
的列表。
但是,如果我使用left join fetch
加载select e from Employee e left join fetch e.assignments
的查询加载员工,则关联的Assignment / Project对象不会加载,即使< / em>我可以看到数据库查询实际上正在进行连接,数据又回来了。
上述映射与left join fetch
无法正确交互的内容是什么?
我在更简单的left join fetch
映射中使用@ElementCollection
没有问题,所以我想知道问题是什么。
谢谢!