Jpa 与@ElementCollection的三元关系-左连接获取行为异常
JPA 2,Eclipselink 2.3.2 我试图用两个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
@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缓存没有影响