java JPA通用存储库,不适用于特定名称
我制作了一个带有JPA集成的Jax-RS端点,在这里,我尝试基于一个通用名称进行查询,以创建一个查询,从数据库中获取数据
@Override public Set<E> get() {
EntityManager em = emf.createEntityManager();
List<E> results = null;
try {
results = em.createQuery("SELECT e FROM " + entityClass.getSimpleName() + " e", entityClass)
.getResultList();
} finally {
em.close();
return new HashSet<E>(results);
}
}
当我创建存储库的实例时,我在SQL数据库中指定类名和主键(通常是整数)
public class BaseRepository<E, PK> implements CRUDOperations<E, PK> {
private Class<E> entityClass;
protected EntityManagerFactory emf;
}
我在一个虚拟类中尝试了这个方法,只使用了一个字符串,效果很好, 我在调试器中测试了它
然而,当我尝试为我创建的实际类执行此操作时,我只会返回null(甚至不是一个空集)=
最后,我检查了数据库,这些表在数据库中具有相同的名称,并且匹配
# 1 楼答案
原因是我没有向entity类添加无参数构造函数,因此它无法从数据库中获取一组实体