具有集合集合的 JPA 实体

JPA Entity with collection of collections

我想要一个带有集合的实体及其集合,但是我遇到了一些问题,例如 'cannot simultaneously fetch multiple bags' 或我知道它应该包含条目的空结果集。整件事都是关于饮食的,所以我有以下实体:

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

但是它 returns 为空结果集。如何解决?

正确答案:使用集合而不是列表。