与@ElementCollection的三元关系 - 左连接获取行为不端

时间:2012-10-24 18:03:32

标签: jpa eclipselink bidirectional-relation

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没有问题,所以我想知道问题是什么。

谢谢!

0 个答案:

没有答案