xen*_*ide 11 java jpa criteria criteria-api
我通过一种方法获得了我的实体类.我试图找出,如何通过JPA JPQL或Criteria API我可以发出截断或删除.我认为标准api对于使用类更自然,而truncate是一个更快的操作,所以这些是首选.这是我到目前为止所做的,但不确定要添加/更改的内容.
CriteriaBuilder cb = this._em().getCriteriaBuilder();
cb.createQuery( _entityClass() ).from( _entityClass() );
Run Code Online (Sandbox Code Playgroud)
注意:_entityClass返回MyEntity.class,我没有其他引用MyEntity这是一个更通用的实现.
wyp*_*prz 18
假设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();
Run Code Online (Sandbox Code Playgroud)
或采用通用方法:
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();
}
Run Code Online (Sandbox Code Playgroud)
类似地,对于JPQL/SQL查询:
// JPQL
em.createQuery("DELETE FROM MyEntity e").executeUpdate();
// SQL
em.createNativeQuery("TRUNCATE TABLE MyEntity").executeUpdate();
Run Code Online (Sandbox Code Playgroud)
或采用通用方法:
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();
}
Run Code Online (Sandbox Code Playgroud)
使用Criteria API,您只能使用SELECT,UPDATE,DELETE语句,因此无法使用TRUNCATE.
| 归档时间: |
|
| 查看次数: |
13319 次 |
| 最近记录: |