Hibernate过滤集合

时间:2015-02-27 11:51:25

标签: hibernate

我正在寻找一个关于hibernate标准的解决方案(如果存在)。

我有 ClassA ,其中包含一组 ClassB ,其中包含一组 ClassC 。 ClassC有5个布尔属性,由5个公式计算。

我需要的是加载每个A类,只有ClassB至少有一个ClassC,其中一个属性为true。

例如:

  • A1
    • B1
      • C1 (1,0,0,0,0)
      • C2(0,0,0,0,0)
    • B2
      • C3(0,0,0,0,0)
    • B3
      • C4(0,0,0,0,0)
      • C5 (0,0,1,0,0)
      • C6(0,0,0,0,0)

我想通过Hibernate只获得粗体签名对象,但是hibernate将返回所有内部的A1(正确!!!)。

有一种方法可以告诉hibernate不加载所有内容吗?

这就是我的工作

Criteria c = session.createCriteria(ClassA.class, "a");

c.createAlias("a.classBs", "b").setFetchMode("b", FetchMode.SELECT);
c.createAlias("b.classCs", "c").setFetchMode("c", FetchMode.SELECT);

Disjunction or = Restrictions.disjunction();
or.add(Restrictions.eq("c.propOne", Boolean.TRUE));
or.add(Restrictions.eq("c.propTwo", Boolean.TRUE));
or.add(Restrictions.eq("c.propThree", Boolean.TRUE));
or.add(Restrictions.eq("c.propFour", Boolean.TRUE));
or.add(Restrictions.eq("c.propFive", Boolean.TRUE));
c.add(or);  

ret = (List<ClassA>) c .list();

P.S。我不能将过滤器用于集合映射,因为布尔属性公式对于manteinance来说太长了

0 个答案:

没有答案