假设
MyEntity引用了要删除的表,则可以按照以下步骤操作:
// Criteria API (JPA 2.1 and above)CriteriaBuilder builder = em.getCriteriaBuilder();CriteriaDelete<MyEntity> query = builder.createCriteriaDelete(MyEntity.class);query.from(MyEntity.class);em.createQuery(query).executeUpdate();
或采用通用方法:
public <T> int deleteAllEntities(Class<T> entityType) { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaDelete<T> query = builder.createCriteriaDelete(entityType); query.from(entityType); return em.createQuery(query).executeUpdate();}对于JPQL / SQL查询类似:
// JPQLem.createQuery("DELETE FROM MyEntity e").executeUpdate();// SQLem.createNativeQuery("TRUNCATE TABLE MyEntity").executeUpdate();或采用通用方法:
public static <T> int deleteAllEntities(Class<T> entityType) { String query = new StringBuilder("DELETE FROM ") .append(entityType.getSimpleName()) .append(" e") .toString(); return em.createQuery(query).executeUpdate();}public static <T> int truncateTable(Class<T> entityType) { String query = new StringBuilder("TRUNCATE TABLE ") .append(entityType.getSimpleName()) .toString(); return em.createNativeQuery(query).executeUpdate();}使用Criteria API,您只能使用SELECT,UPDATE,DELETE语句,因此TRUNCATE是不可能的。



