java - 将泛型与 JPA 标准结合使用

标签 java generics jpa

我正在尝试创建一种方法,该方法将接受用于构建 JPA Criteria 对象的泛型。

目前的方法是

public List<Table> getTopLevelItems() throws Exception 
{
    EntityManagerAC em = JPABase.createElementEntityManager();
    Criteria<Table> criteria = 
           new Criteria<Table>(em, Table.class);
    criteria.addEquals("levelNum", "1");
    return criteria.search();    
}

我想要的是这样的,

public List<?> getTopLevelItems(Class clazz) throws Exception 
{
    EntityManagerAC em = JPABase.createElementEntityManager();
    Criteria<clazz> criteria = new Criteria<clazz>(em, clazz.getClass());
    criteria.addEquals("levelNum", "1");
    return criteria.search();    
}

使用 java 泛型可以实现这一点吗?

最佳答案

应该可以这样:

public <T> List<T> getTopLevelItems(Class<T> clazz) throws Exception 
{
    EntityManager em = JPABase.createElementEntityManager();
    Criteria<T> criteria = new Criteria(em, clazz.getClass());
    criteria.addEquals("levelNum", "1");
    return criteria.search();    
}

关于java - 将泛型与 JPA 标准结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045782/

相关文章:

Java JNIEnv 段错误

java - 泛型转换问题

C# 泛型类型不可赋值

java - 无法使用 Java 泛型选择合适的方法

java - 为什么 EntityManager createNativeQuery 列表有时返回 BigDecimal 而有时返回 Integer?

java - 将字段/变量记录到 Web 应用程序中的文件中

java - 尝试将数据库连接从 MySQL 更改为 Oracle 但出现错误

java - 获取 Java 类的可用成员的名称

java - EntityLIstener 未通过级联的 OneToOne 映射调用

java - Spring Boot 中的 Hibernate JPA/CrudRepository 实体锁定