具有集合集合的JPA实体

时间:2015-01-20 16:19:21

标签: hibernate jpa

我想获得一个带有集合及其集合的实体,但是我遇到了一些问题,例如“无法同时获取多个行李”或者我知道应该包含条目的空结果集。整个事情是关于饮食,所以我有以下实体:

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

但是它返回空结果集。怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

正确答案:使用集合代替列表。