2015-01-20 2 views
0

Я хотел бы получить сущность с коллекцией и ее коллекциями, однако мне приходится сталкиваться с некоторыми проблемами, такими как «не может одновременно извлекать несколько пакетов» или пустые наборы результатов, где я знаю, что он должен содержать записи. Все это о диетах, поэтому у меня есть следующие объекты:JPA Entity с коллекцией коллекций

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<>(); 

Я хотел бы получить Diet со всеми его DietEntries и все продукты и блюда из DietEntry. Я могу получить Diet легко, но у меня есть проблемы с получением коллекции, поэтому я сделал следующий запрос:

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(); 

Однако она возвращает пустой результирующий набор. Как это решить?

+1

См. Предыдущий вопрос/ответ: http://stackoverflow.com/questions/1346181/using-distinct-in-jpa –

+0

Я удалил выделенное ограничение из запроса, но он по-прежнему дает пустой набор результатов. –

ответ

0

Правильный ответ: использование наборов вместо списков.