Jor*_*orn 9 java hibernate jpa criteria-api
我正在尝试使用CriteriaBuilderAPI 通过一个查询删除一堆对象.我正在寻找像这样的选择:
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();
但后来删除而不是选择.据我所知,没有remove或delete方法CriteriaQuery.是否可以使用此API?
我当然可以执行select,然后调用entityManager.remove(object)每个结果,但这感觉非常低效.
gua*_*ian 16
试试这个:
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));
小智 6
在JPA 2.1中,有Criteria API完全符合您的要求.它看起来像这样:
CriteriaBuilder cBuilder = em.getCriteriaBuilder();
CriteriaDelete<T> cq = cBuilder.createCriteriaDelete(entityClass);
Root<T> root = cq.from(entityClass);
cq.where(/*some codition*/);
int result = em.createQuery(cq).executeUpdate();
你可以在这里申请JPA 2.1 SPEC和API
| 归档时间: | 
 | 
| 查看次数: | 9767 次 | 
| 最近记录: |