Mam encję Diet, która posiada kolekcje DietEntry, która to z kolei posiada dwie kolekcje: Products oraz Meals. Chciałbym pobrać encję Diet z kolekcją DietEntry i jej kolekcjami, jednak nie mogę pobrać DietEntry, ponieważ zawsze zwraca mi pusty zbiór. Próbowałem rozbić to na dwa zapytania i pobrać DietEntry i jej kolekcje w osobnym zapytaniu, lecz dostaję wciąż pusty zbiór.
Klasy:
public class Diet extends BaseEntity{
@NotEmpty
@Column(unique = true)
private String name;
@OneToMany(cascade=CascadeType.ALL, mappedBy = "diet")
@LazyCollection(LazyCollectionOption.FALSE)
private List<DietEntry> dietEntry = new ArrayList<>();
@Entity
@Table(name = "diet_entry")
public class DietEntry extends BaseEntity{
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "dietId")
private Diet diet;
@ManyToMany(cascade=CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List<Meal> meals = new ArrayList<>();
@ManyToMany(cascade=CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List<ProductQuantity> products = new ArrayList<>();
Zapytanie:
Query query = this.em.createQuery("SELECT distinct(de) FROM DietEntry de join de.products dep join de.meals dem WHERE de.diet = :diet");
query.setParameter("diet", diet);
return query.getResultList();