【问题标题】:Hibernate Criteria Query with Predicates to select records from given list of Ids [closed]带有谓词的休眠条件查询以从给定的ID列表中选择记录[关闭]
【发布时间】:2019-03-30 18:05:41
【问题描述】:

我正在尝试使用 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 个结果

【问题讨论】:

    标签: java database hibernate jpa hibernate-criteria


    【解决方案1】:

    我认为 id 对于每一行都是唯一的。你必须使用OR 代替AND 喜欢

    Predicate queryPredicate = builder.or(predicates.toArray(new Predicate[predicates.size()]))
    

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

    您必须使用CriteriaBuilder.in() 方法来匹配您提供的确切ID 的记录。

    【讨论】:

      猜你喜欢
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2013-11-15
      • 1970-01-01
      • 2013-09-08
      • 2012-09-13
      • 2015-06-17
      相关资源
      最近更新 更多