Java Hibernate Critera查询或父子关联
我正在使用Hibernate 3.5,我正在尝试执行一个搜索,该搜索将返回包含关键字的父对象,或者如果其子对象之一包含关键字,则返回父项 下面是一个使用Cat的示例: 此查询返回名称以F开头的所有父猫Java Hibernate Critera查询或父子关联,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我正在使用Hibernate 3.5,我正在尝试执行一个搜索,该搜索将返回包含关键字的父对象,或者如果其子对象之一包含关键字,则返回父项 下面是一个使用Cat的示例: 此查询返回名称以F开头的所有父猫 Criteria criteria = session.createCriteria(Cat.class) .createAlias("kittens", "kits") .add(Restrictions.like("kits.name", "F%"); 此查询返回所有拥有以F
Criteria criteria = session.createCriteria(Cat.class)
.createAlias("kittens", "kits")
.add(Restrictions.like("kits.name", "F%");
此查询返回所有拥有以F开头的小猫的父猫。
这就是我的麻烦开始的地方,我需要这两个集合的析取。首先,我尝试:
Criteria.criteria = session.createCriteria(Cat.class)
.createAlias("kittens", "kits")
.add(Restrictions.disjunction()
.add(Restrictions.like("name", "F%")
.add(Restrictions.like("kits.name", "F%");
此查询不起作用。它只返回其子代的名称以F开头的父代,就像前面的查询一样
Criteria.criteria = session.createCriteria(Cat.class)
.createAlias("kittens", "kits")
.add(Restrictions.or(
Restrictions.like("name", "F%"),
Restrictions.like("kits.name", "F%"));
如果我正确阅读了API文档,那么这个查询与前面的查询相同。这是有意义的,因为我得到的结果与前两个查询相同
我被难住了,想通过标准搜索得到正确的猫集合
我想我可以运行两个单独的查询,然后清理生成的集合,但这似乎是不必要的
如有任何建议,我们将不胜感激。
喵喵。试试:
Criteria.criteria = session.createCriteria(Cat.class)
.createAlias("kittens", "kits", Criteria.LEFT_JOIN)
.add(Restrictions.or(
Restrictions.like("name", "F%"),
Restrictions.like("kits.name", "F%"));
这应该行得通
Criteria.criteria = session.createCriteria(Cat.class)
.createAlias("kittens", "kits")
.add(Restrictions.disjunction()
.add(Restrictions.like("name", "F%")
.add(Restrictions.like("kits.name", "F%");
Criteria.criteria = session.createCriteria(Cat.class)
.createAlias("kittens", "kits")
.add(Restrictions.or(
Restrictions.like("name", "F%"),
Restrictions.like("kits.name", "F%"));
Criteria.criteria = session.createCriteria(Cat.class)
.createAlias("kittens", "kits", Criteria.LEFT_JOIN)
.add(Restrictions.or(
Restrictions.like("name", "F%"),
Restrictions.like("kits.name", "F%"));