Generics 抽象、泛型DAO中的DeleteAll方法

Generics 抽象、泛型DAO中的DeleteAll方法,generics,jpa,jakarta-ee,Generics,Jpa,Jakarta Ee,我有一个抽象的泛型DAO类,所有其他DAO类都从该类继承,定义为公共抽象类JpaDAO实现IDAO,它定义了持久(E实体),删除(E实体),列表findAll()等方法 该类具有以下类变量和构造函数: protected Class<E> entityClass; @PersistenceContext(unitName = "umPU") protected EntityManager entityManager; public JpaDAO() { Parameteri

我有一个抽象的泛型DAO类,所有其他DAO类都从该类继承,定义为
公共抽象类JpaDAO实现IDAO
,它定义了
持久(E实体)
删除(E实体)
列表findAll()
等方法

该类具有以下类变量和构造函数:

protected Class<E> entityClass;
@PersistenceContext(unitName = "umPU")
protected EntityManager entityManager;

public JpaDAO() {
    ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
    this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[1];
}
受保护类entityClass;
@PersistenceContext(unitName=“umPU”)
受保护的实体管理器实体管理器;
公共JpaDAO(){
ParameteredType genericSuperclass=(ParameteredType)getClass().getGenericSuperclass();
this.entityClass=(类)genericSuperclass.getActualTypeArguments()[1];
}

如何实现删除所有持久实体的方法
public void removeAll()

JB Nizet是正确的,删除所有条目的方法将不会在生产中使用,因此,不应成为生产代码的一部分。迭代所有条目以删除它们对于集成测试是可以接受的,因为在这种情况下,性能或多或少是不相关的。

这几乎永远不会被使用。但它很简单:调用findAll(),迭代所有实体,然后删除它们。我需要它在每次集成测试后清理数据库。因此,除了通过所有查询进行迭代之外,没有其他解决方案了?您可以使用JPQL delete查询,但这不会应用级联选项。如果一个方法只被测试使用,那么它不应该是生产代码的一部分。把它放在测试代码中。