除了更少的代码外,以下两种使用Hibernate Criteria API构建IN子句的方法有何区别?是否存在性能问题?我缺少检索中的某些逻辑吗?就返回的行而言,它们似乎都执行相同的操作。
Disjunction disj = Restrictions.disjunction();
for (String value : stringArray) {
disj.add(Restrictions.eq("code", value));
}
where.add(disj);
VS。
Restrictions.in("code", stringArray);
我问的原因是因为我正在重构存在前者的旧代码,但是我期望后者。如果它们都相同,那么我将不讲遗留代码。
最佳答案
休眠Disjunction用于
Group expressions together in a single disjunction
这意味着,如果您必须有条件地与值X或Y或Z进行比较,
您可以遍历并应用selective disjunction
因此,理想情况下,在您的情况下,Restrictions.in和Restrictions.Disjunction做同样的事情,在这种情况下,我更喜欢前者。