Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 与@ElementCollection的三元关系-左连接获取行为异常_Jpa_Eclipselink_Bidirectional Relation - Fatal编程技术网

Jpa 与@ElementCollection的三元关系-左连接获取行为异常

Jpa 与@ElementCollection的三元关系-左连接获取行为异常,jpa,eclipselink,bidirectional-relation,Jpa,Eclipselink,Bidirectional Relation,JPA 2,Eclipselink 2.3.2 我试图用两个@ElementCollection来建模一个三元关系,而不是两个@OneToMany,主要是为了使连接对象成为一个@embedded而不是一个@Entity,并避免嵌套对象需要@Id 比如说 @Entity public class Project { @ElementCollection @CollectionTable(name="assignment", joinColumns=@JoinColumn(name="p

JPA 2,Eclipselink 2.3.2

我试图用两个
@ElementCollection
来建模一个三元关系,而不是两个
@OneToMany
,主要是为了使连接对象成为一个
@embedded
而不是一个@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;
}
@实体
公共类项目{
@元素集合
@CollectionTable(name=“assignment”,joinColumns=@JoinColumn(name=“project\u id”))
公开设定作业;
}
@实体
公营雇员{
@元素集合
@CollectionTable(name=“assignment”,joinColumns=@JoinColumn(name=“employee\u id”))
公开设定作业;
}
@可嵌入
公共课堂作业{
@许多酮
@JoinColumn(name=“employee\u id”)
公共雇员;
@许多酮
@JoinColumn(name=“project\u id”,insertable=false,updateable=false)
公共工程项目;
}
为了持续,我将
分配
实例添加到
项目
实例中,并参考右侧的
员工
。这个很好用

此外,我还可以通过
员工
参考
项目
列表

但是,如果我使用
left join fetch
的查询加载员工,如
从员工e left join fetch e.assignments中选择e
,则不会加载关联的分配/项目对象,即使我可以看到DB查询实际上正在进行连接,并且数据正在返回

上面的映射与
left join fetch
之间的交互不正常是什么原因

我在simpler
@ElementCollection
映射中使用了
left join fetch
,没有问题,所以我想知道问题出在哪里


谢谢

还确认这不是缓存问题-刷新整个JPA缓存没有影响