我想获得一个带有集合及其集合的实体,但是我遇到了一些问题,例如“无法同时获取多个行李”或者我知道应该包含条目的空结果集。整个事情是关于饮食,所以我有以下实体:
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<>();
我想从DietEntry获得Diet的所有DietEntries和所有产品和膳食。我可以很容易地得到饮食,但是我在获取集合方面遇到了问题,所以我做了以下查询:
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();
但是它返回空结果集。怎么解决这个问题?
答案 0 :(得分:0)
正确答案:使用集合代替列表。