Троичные отношения с @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 сопоставления без проблем, поэтому мне интересно, в чем проблема.

Спасибо!

0 ответов

Другие вопросы по тегам