有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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;
}

我在一个虚拟类中尝试了这个方法,只使用了一个字符串,效果很好, 我在调试器中测试了它

It gets the right class name and respective data in the database

enter image description here

然而,当我尝试为我创建的实际类执行此操作时,我只会返回null(甚至不是一个空集)=

最后,我检查了数据库,这些表在数据库中具有相同的名称,并且匹配


共 (1) 个答案

  1. # 1 楼答案

    原因是我没有向entity类添加无参数构造函数,因此它无法从数据库中获取一组实体