我正在寻找一个关于hibernate标准的解决方案(如果存在)。
我有 ClassA ,其中包含一组 ClassB ,其中包含一组 ClassC 。 ClassC有5个布尔属性,由5个公式计算。我需要的是加载每个A类,只有ClassB至少有一个ClassC,其中一个属性为true。
例如:
我想通过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来说太长了