带有谓词的休眠条件查询以从给定的ID列表中选择记录

时间:2018-10-26 03:19:26

标签: java database hibernate jpa hibernate-criteria

我正在尝试编写一个带有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个结果

1 个答案:

答案 0 :(得分:1)

我认为id对于每一行都是唯一的。您必须使用OR的{​​{1}} 像

AND

具有所有ID的记录在逻辑上是错误的。

OR

您必须使用Predicate queryPredicate = builder.or(predicates.toArray(new Predicate[predicates.size()])) 方法将记录与您提供的确切ID相匹配。