动态JPA OR表达式

时间:2016-05-23 22:26:56

标签: jpa

如何构建Criteria Query以更新多个项目的状态?

final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaUpdate<Item> query = builder.createCriteriaUpdate(Item.class);
Root<Item> root = query.from(Item.class);
List<Predicate> predicates = new ArrayList<Predicate>();
for(Long id : itemIds) 
{
    predicates.add(builder.or(builder.equal(root.get(Item_.id), id)));
}

query.set(root.get(Item_.status), status)
    .where(predicates.toArray(new Predicate[predicates.size()]));

entityManager.createQuery(query).executeUpdate();

以上查询仅在itemIds时有效。 size()== 1.如果itemIds.size()&gt; 2然后实体将不会更新。任何人都可以帮助构建OR表达式的正确谓词。

提前感谢!

0 个答案:

没有答案