我有两个看起来像这样的对象:
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?
答案 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)));