JPA 2.1批量更新与Eclipselink一样正常工作,但hibernate没有,代码如下:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaUpdate<Assignment> cu = cb.createCriteriaUpdate(Assignment.class);
Root<Assignment> assignment = cu.from(Assignment.class);
Path<Assignment> parent = assignment.get(Assignment_.parent);
Path<BooleanWrapper> assignmentDeleted = assignment.get(Assignment_.deleted);
Path<BooleanWrapper> parentDeleted = parent.get(Assignment_.deleted);
Predicate assignmentDeletedIsFalse = cb.equal(assignmentDeleted, BooleanWrapper.F);
Predicate parentDeletedIsTrue = cb.equal(parentDeleted, BooleanWrapper.T);
cu.set(assignmentDeleted, BooleanWrapper.T);
cu.where(cb.and(assignmentDeletedIsFalse, parentDeletedIsTrue));
return em.createQuery(cu).executeUpdate();