【发布时间】:2018-12-21 12:54:55
【问题描述】:
我创建了一个带有 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(甚至不是空集=
最后,我查了下数据库,发现数据库中的表同名,而且匹配。
【问题讨论】:
-
我建议在try-block中返回你的hashset,即使返回finally-block也会被调用。
-
为什么会首选?
-
因为你抑制了一个最有可能发生在你的代码中的异常以及你得到
null的原因 -
有道理,我会改的
-
这和spring数据有什么关系?
标签: java spring spring-data-jpa