Троичные отношения с @ElementCollection - неправильное поведение левого соединения
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
связанные объекты назначения / проекта не загружаются, хотя я вижу, что запрос к БД фактически выполняет соединение и данные возвращаются.
Что это за перечисленные выше отображения, которые как-то не взаимодействуют с left join fetch
должным образом?
я использовал left join fetch
проще @ElementCollection
сопоставления без проблем, поэтому мне интересно, в чем проблема.
Спасибо!