遍历Hibernate Criteria OR查询中的关联

时间:2011-02-22 18:01:25

标签: java hibernate criteria

我有两个看起来像这样的对象:

public class Foo{
    List<Bar> bars;
    String name;
}

public class Bar {
    String value;
}

我想使用Hibernate Criteria API来创建一个涉及Foo的两个属性的OR查询。具体来说,我想选择Foos“somevalue”或name集合中Bar bars的所有value anothervalue”。

我知道如何独立完成这些工作:

createCriteria(Foo.class).add(Restrictions.eq("name","somevalue"));

and

createCriteria(Foo.class).createCriteria("bars").add(Restrictions.eq("value","anothervalue"));

(摘自here

但是当我尝试将它们放在Restrictions.or()语句的任何一侧时,它会给我一个编译错误。所以,我的问题是:这甚至可以使用Criteria,还是我必须使用HQL或纯SQL?

1 个答案:

答案 0 :(得分:0)

从我的头脑中,这会起作用吗?

Criteria criteria = session.createCriteria(Foo.class);
criteria.createAlias("bars", "bar");
String value = "somevalue";
criteria.add(Restrictions.or(Restrictions.eq("name", value), Restrictions.eq("bar.name", value)));