Java 将标准放入'的列表中;或';条件
我有一个要求,即我需要为Java 将标准放入'的列表中;或';条件,java,hibernate,orm,hibernate-criteria,Java,Hibernate,Orm,Hibernate Criteria,我有一个要求,即我需要为或条件使用标准。此标准将在循环中创建。因此,我将标准添加到列表中。在循环之外,我将这些标准添加到标准中,并将列表(其中包含标准)键入标准[]数组 List<Criterion> criterions = new ArrayList<Criterion>(); for (XYZ xyz : xyzs) { Integer[] age = findMinAndMaxAgeXYZ(xyz);
或条件使用标准。此标准将在循环中创建。因此,我将标准添加到列表中
。在循环之外,我将这些标准
添加到标准
中,并将列表(其中包含标准
)键入标准[]
数组
List<Criterion> criterions = new ArrayList<Criterion>();
for (XYZ xyz : xyzs) {
Integer[] age = findMinAndMaxAgeXYZ(xyz);
Date minAge = prepareDateByAge(age[0]);
Date maxAge = prepareDateByAge(age[1]);
// Ordering has been changed to fetch the records for
// between condition.
criterions.add(Restrictions.between("dob", maxAge, minAge));
}
criteria.add(Restrictions.or((Criterion[]) criterions.toArray()));
将标准添加为或而不是放入列表的任何其他解决方案。toArray()
返回一个对象数组。您需要的是一系列标准。因此,正确的方法是:
Criterion[] array = criterions.toArray(new Criterion[criterions.size()]);
请参见和之间的不同返回类型
注意,在这种情况下,简单地使用析取会容易得多:
Disjunction disjunction = Restrictions.disjunction();
for (XYZ xyz : xyzs) {
...
disjunction.add(Restrictions.between("dob", maxAge, minAge));
}
criteria.add(disjunction);
toArray()
返回一个对象数组。您需要的是一系列标准。因此,正确的方法是:
Criterion[] array = criterions.toArray(new Criterion[criterions.size()]);
请参见和之间的不同返回类型
注意,在这种情况下,简单地使用析取会容易得多:
Disjunction disjunction = Restrictions.disjunction();
for (XYZ xyz : xyzs) {
...
disjunction.add(Restrictions.between("dob", maxAge, minAge));
}
criteria.add(disjunction);
toArray()
返回一个对象数组。您需要的是一系列标准。因此,正确的方法是:
Criterion[] array = criterions.toArray(new Criterion[criterions.size()]);
请参见和之间的不同返回类型
注意,在这种情况下,简单地使用析取会容易得多:
Disjunction disjunction = Restrictions.disjunction();
for (XYZ xyz : xyzs) {
...
disjunction.add(Restrictions.between("dob", maxAge, minAge));
}
criteria.add(disjunction);
toArray()
返回一个对象数组。您需要的是一系列标准。因此,正确的方法是:
Criterion[] array = criterions.toArray(new Criterion[criterions.size()]);
请参见和之间的不同返回类型
注意,在这种情况下,简单地使用析取会容易得多:
Disjunction disjunction = Restrictions.disjunction();
for (XYZ xyz : xyzs) {
...
disjunction.add(Restrictions.between("dob", maxAge, minAge));
}
criteria.add(disjunction);