我正在搞定应该带有两个参数的方法的实现:
一个Criteria
以及Criterion的列表
我的代码实际上是:
public static void addNullSafeOrCondition(final Criteria criteria, final Criterion... conditions) {
final List<Criterion> validCriterion = new ArrayList<Criterion>(conditions.length);
for (final Criterion condition : conditions) {
if (condition != null) {
validCriterion.add(condition);
}
}
if (validCriterion.size() == 0) {
return;
} else {
if (validCriterion.size() == 1) {
criteria.add(validCriterion.get(0));
} else {
//Can't convert list to ... varargs
criteria.add(Restrictions.or( *** validCriterion *** ));
}
}
}
我找不到将
ArrayList
转换为varargs
的任何方法,但是特别是我在寻找更好的解决方案,例如任何现有的HibernateUtils库或任何Restriction的方法(我都不知道),它们都可以创建null安全限制条件。谢谢。
最佳答案
public static void addNullSafeOrCondition(final Criteria criteria, final Criterion... conditions) {
if (conditions == null || conditions.length==0){
return;
}
final List<Criterion> validCriterion = new ArrayList<Criterion>();
for (final Criterion condition : conditions) {
if (condition != null) {
validCriterion.add(condition);
}
}
if (validCriterion.isEmpty()) {
return;
}
//Can't convert list to ... varargs
criteria.add(Restrictions.or(validCriterion.toArray(new Criterion[ validCriterion.size() ]))); //public static Disjunction or(Criterion... predicates)--work's for one element also
}
criteria.add(Restrictions.or(validCriterion.toArray(new Criterion [validCriterion.size()])));
创建自己的HibernateUtils并将您的方法移至on HibernateUtils