gpt4 book ai didi

java - 将条件放入 'OR' 条件的列表中

转载 作者:行者123 更新时间:2023-12-01 22:50:29 25 4
gpt4 key购买 nike

我有需要使用Criterion作为条件的要求。此Criterion 将在循环中创建。因此,我将 Criterion 添加到 List 中。在循环之外,我将这些 Criterion 添加到 Criteria 中,并将列表(包含 Criterion)类型转换为 Criterion [] 数组。

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()));

但这给了我异常(exception)

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lorg.hibernate.criterion.Criterion;  

Criterion添加为而不是放入列表的任何其他解决方案。

最佳答案

toArray() 返回一个对象数组。您需要的是一系列标准。所以正确的方法是:

Criterion[] array = criterions.toArray(new Criterion[criterions.size()]);

查看 toArray() 之间的不同返回类型和 toArray(T[])

请注意,在这种情况下,简单地使用析取会更容易:

Disjunction disjunction = Restrictions.disjunction();
for (XYZ xyz : xyzs) {
...
disjunction.add(Restrictions.between("dob", maxAge, minAge));
}
criteria.add(disjunction);

关于java - 将条件放入 'OR' 条件的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com