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 (甚至不是一个空集=
最后,我检查了数据库,数据库中的表具有相同的名称,并且匹配。
解决方案
原因是我没有向实体类添加无参数构造函数,因此它无法从数据库中获取一组实体。
推荐阅读
- php - 获取搜索日期的问题和输入的日期不正确,dump() 在 POSTMAN 中显示
- laravel - 函数 App\Http\Controllers\homepageController::edit_web_services() 的参数太少,通过了 0,预期正好 1
- python - Python TypeError:一元+的错误操作数类型:'str'
- apache-spark - 如何将火花数据框中的两列相乘
- php - php将字符串转换为日期时间格式
- algolia - Algolia 搜索替换字符
- javascript - 使用 2 种方法发送对象的 Jquery 发布错误
- javascript - 如何在 React-Native 中读取已经填充的 TextInput?
- java - 如果别的??尝试??我需要方法方面的帮助
- xml - xsl:for-each 在表列中