Hibernate Criteria按集合的属性过滤
我正在使用hibernate的标准子API来管理前端用户可以执行的动态查询。 只要过滤完成,认为根实体的特性(称为“根”),一切都很好,假设关联路径是用别名正确指定的。
但是我达到了一个复杂的查询来执行,它涉及到一组子对象(它们的类让我们称之为“子”)。 我不得不根据子对象的属性的值来选择根实体(这可以做得非常简单),必须更深入地检查,如果匹配另一个条件,那个子对象(符合一些标准) ,但只限于那个孩子!
所以,把它放在更具体的例子上,让我们假设下面的声明:
class Root {
Long id;
Collection<Child> childs;
}
class Child {
Long id;
ValueObject attr;
}
class ValueObject {
String attribute;
}
当执行查询的时间到来时,这是一个幸运线程执行的代码:
Criteria criteria = session.createCriteria(Root.class);
criteria.createAlias("childs","childs");
criteria.createAlias("childs.attr","attr_childs");
criteria.add(Restrictions.eq("childs.id",20L));
criteria.add(Restrictions.eq("childs.attr","foo"));
但我想要的是,不要匹配所有包含id为20的子对象的Root对象,另一方面,它还包含其attr值为“foo”的另一个子对象(无论它们是否相同)。 我真正想要的是检索所有包含id为20,attr值为“foo”的子对象的Root对象(所有这些限制都由同一个实体子实现!)。
我试图找到关于这个的信息,但似乎都混淆了!
如果有人能帮助我,我将非常感激!
谢谢大家!
问候!
胜利者。
链接地址: http://www.djcxy.com/p/6323.html上一篇: Hibernate Criteria Filtering by attributes of collection