在JPA中批量删除带条件的数据,可以使用JPQL或者Criteria API进行实现。
通过JPQL实现,可以使用DELETE语句,举例如下:
Query query = entityManager.createQuery("delete from User u where u.age > 20");
int deletedCount = query.executeUpdate();
通过Criteria API实现,需要先创建一个CriteriaBuilder,然后创建CriteriaDelete对象,最后通过entityManager的createQuery方法执行删除操作,举例如下:
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaDelete<User> delete = builder.createCriteriaDelete(User.class);
Root<User> root = delete.from(User.class);
delete.where(builder.gt(root.get("age"), 20));
Query query = entityManager.createQuery(delete);
int deletedCount = query.executeUpdate();
这样就可以通过JPQL或Criteria API实现JPA中带条件的批量删除了。