【发布时间】:2015-09-10 03:17:56
【问题描述】:
我有以下情况:
@Entity
public class Period
{
String Name;
}
@Entity
public class Bill
{
Period period;
@OneToMany(mappedBy = "bill", fetch = FetchType.LAZY)
private List<Entry> entry = new ArrayList<Entry>(0);
}
@Entity
public class Entry
{
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BILL_ID", nullable = false)
Bill bill;
String text;
BigDecimal amount;
}
所以我需要的是在单个查询中获取所有数据,根是 Bill 或 Entry 使用 JPA 2.0 标准(Hibernate 后面)。我已经阅读了几篇关于此问题的帖子HERE 和HERE,似乎我无法在结果中使用子查询或获取两级深度的数据。
编辑:为了让我的问题更清楚:当我使用Entry 作为根时,我无法获取Period,当我使用Bill 作为根时,我无法获取Entry 中的所有其他表.此外,我不能使用 Eager fetch,因为还有其他用例需要这些表。
还有其他方法吗?
谢谢!
【问题讨论】:
-
如果您也可以发布 HQL 或 SQL 来完成您想要完成的工作,这将有所帮助。
-
如果您将获取类型更改为
eager,它将获取它,具体取决于您的 HQL -
我对这些表有不同的用例,我不能在这里使用
earger。
标签: java hibernate jpa-2.0 criteria