我正在尝试编写一个带有Predicate的Hibernate Criteria查询,以从给定的id列表中获取db中的记录,其中id是db表中的一列。
我所做的是
List<Predicate> predicates = new ArrayList<>();
for(String id : ids)
{
predicates.add(builder.equal(root.get(MyModel.id), Integer.parseInt(id)));
}
//Other predicates I don't care about
Predicate queryPredicate = builder.and(predicates.toArray(new Predicate[predicates.size()]))
criteriaQuery.select(root);
criteriaQuery.where(queryPredicate);
我得到0个结果
答案 0 :(得分:1)
我认为id对于每一行都是唯一的。您必须使用OR
的{{1}}
像
AND
具有所有ID的记录在逻辑上是错误的。
OR
您必须使用Predicate queryPredicate = builder.or(predicates.toArray(new Predicate[predicates.size()]))
方法将记录与您提供的确切ID相匹配。