3

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. 这工作正常。

此外,我也可以通过就好了来引用Projects的列表。Employee

但是left join fetch,如果我使用类似的查询加载员工,即使我可以看到数据库查询实际上正在执行连接并且数据正在返回select e from Employee e left join fetch e.assignments,关联的分配/项目对象也不会被加载。

上述映射以某种方式无法left join fetch正确交互的原因是什么?

我用过left join fetch更简单的@ElementCollection映射没有问题,所以我想知道问题是什么。

谢谢!

4

0 回答 0