我在处理 Hibernate 标准和集合时遇到了困难。
我有以下关系:
- A有很多B的元素
- A 具有 C 的一个元素
- C有很多D的元素
- D 具有 E 的一个元素
所以基本上
E <----1---- D <---- ---- C <----1---- A ----- ----> B
我正在尝试获取 A 的所有元素,其 C 元素验证 C 属性的某些条件,并且至少有一个与特定 E 相关的元素 D。
所以这是我到目前为止的标准:
session.createCriteria(A.class)
.createCriteria("Cs")
.add(Restrictions.or(Restrictions.eq("attributeA", 1), Restrictions.eq("attributeB", 2)))
.createCriteria("Ds")
.createCriteria("E")
.add(Restrictions.eq("id", 123);
这可以正常工作,但是我从 Hibernate 获得的 sql 结果对我不需要的 C、D 和 E 的所有属性进行了选择(只需要按它们过滤)。如何限制这些并仅使用这些关系进行过滤?
另外,我确实希望获取元素 B,否则我会得到一个必须单独初始化的集合,这会导致更多查询。我怎样才能建立一个包含这些的标准?