我想要一个包含集合和集合的实体,但是我面临一些问题,比如‘不能同时获取多个包’或空的结果集,其中我知道它应该包含条目。整件事都是关于饮食的,所以我有以下几个实体:
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<>();我想从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();但是,它返回空的结果集。如何解决这个问题?
发布于 2015-02-28 19:42:56
正确答案:使用集合而不是列表。
https://stackoverflow.com/questions/28050211
复制相似问题