Java 使用标准';或';缩小结果集
我无法理解如何使用Criteria实现以下查询:Java 使用标准';或';缩小结果集,java,sql,hibernate,liferay,criteria,Java,Sql,Hibernate,Liferay,Criteria,我无法理解如何使用Criteria实现以下查询: SELECT * FROM FooTable WHERE bar = '1' OR bar = '2; 这就是我目前拥有的: public List<FooItem> getFooItems(List<Long> bars) throws SystemException { DynamicQuery query = DynamicQueryFactoryUtil.forClass(FooItem.class,
SELECT * FROM FooTable WHERE bar = '1' OR bar = '2;
这就是我目前拥有的:
public List<FooItem> getFooItems(List<Long> bars) throws SystemException {
DynamicQuery query = DynamicQueryFactoryUtil.forClass(FooItem.class, PortletClassLoaderUtil.getClassLoader());
if (Validator.isNotNull(bars)) {
List<Criterion> barCriteria = new ArrayList<Criterion>();
for (long bar: bars) {
query.add((RestrictionsFactoryUtil.eq("bar", bar)));
}
if (!barCriteria.isEmpty()) {
for (Criterion criteria : barCriteria) {
query.add(criteria);
}
}
}
List<FooItem> result = FooItemLocalServiceUtil.dynamicQuery(query);
return result;
}
如何将这些和
转换为或
的语句
注意:
bar
不是表上的主键。您应该使用限制。disjunition()
,请尝试以下操作
if (!barCriteria.isEmpty()) {
Disjunction or = Restrictions.disjunction();
for (Criterion criteria : barCriteria) {
or.add(criteria);
}
query.add(or);
}
if (!barCriteria.isEmpty()) {
Disjunction or = Restrictions.disjunction();
for (Criterion criteria : barCriteria) {
or.add(criteria);
}
query.add(or);
}