java - 方法泛型返回java类

标签 java hibernate generics casting

我正在使用 Hibernate 构建查询数据库的通用方法,以下方法通过主键查询实体的信息。

@PersistenceContext(unitName = "UnitPers")
private EntityManager entity;

public Object findByPk(Class clazz, Object pk) throws Exception {
    Object obj = null;
    try {
        obj = entity().find(clazz, pk);
    } catch (Exception e) {
        throw e;
    }
    return obj;
}

此方法工作正常,但我不想在调用时进行强制转换(myTypeEntity 的对象)。

private myTypeEntity entity;    
entity = (myTypeEntity) findByPk(myTypeEntity.class, new Bigdecimal("1"));

//GET and SET Methods

我想避免在调用此方法时进行强制转换,记住这是泛型的目的之一,但我还没有成功做到这一点,有什么想法吗?或者我想做的事情是不可能的。

最佳答案

您可以使用泛型而不是使用对象:

public <T> T findByPk(Class<T> clazz, Object pk) throws Exception {
    T obj = null;
    try {
        obj = entity().find(clazz, pk);
    } catch (Exception e) {
        throw e;
    }
    return obj;
}

然后它应该可以在不进行转换的情况下工作

private myTypeEntity entity;    
entity = findByPk(myTypeEntity.class, new Bigdecimal("1"));

关于java - 方法泛型返回java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50847419/

相关文章:

java - 由于缺少行号属性而无法安装断点

java - Hibernate - 从多个表到一个对象的复杂查询

java - 如何为我的 Spring 3/Hibernate 4 LocalSessionFactoryBean 设置事件监听器?

java - 创建泛型类型的数组

c# - 实现嵌套的通用接口(interface)

java - Maven 故障保护 : NoClassDefFoundError for integration tests

java - Eclipse 验证启动属性

java - 为什么这段代码不是线程安全的?

java - Persistence.createEntityManagerFactory() 在哪里寻找持久性单元?

c# - 通用方法返回不同的通用集合