gpt4 book ai didi

java - 使用 CriteriaBuilder 一次删除多个对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:39 25 4
gpt4 key购买 nike

我正在尝试使用 CriteriaBuilder API 通过一个查询删除一堆对象。我正在寻找类似这样的选择:

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<T> query = criteriaBuilder.createQuery(entityClass);
Root<T> root = query.from(entityClass);
query.select(root).where(/*some condition*/);
return entityManager.createQuery(query).getResultList();

然后是删除而不是选择。据我所知,CriteriaQuery 上没有removedelete 方法。是否可以使用此 API?

我当然可以执行选择,然后为每个结果调用 entityManager.remove(object),但感觉效率很低。

最佳答案

试试这个:

CriteriaBuilder criteriaBuilder  = entityManager.getCriteriaBuilder();
CriteriaDelete<SomeClass> query = criteriaBuilder.createCriteriaDelete(SomeClass.class);
Root<SomeClass> root = query.from(SomeClass.class);
query.where(root.get("id").in(listWithIds));

int result = entityManager.createQuery(query).executeUpdate();

where 子句也可以像这样:

query.where(criteriaBuilder.lessThanOrEqualTo(root.get("id"), someId));

关于java - 使用 CriteriaBuilder 一次删除多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25156510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com