方法泛型返回java类
我正在使用Hibernate构建查询数据库的通用方法,下面的方法通过主键查询实体的信息方法泛型返回java类,java,hibernate,generics,casting,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
@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;
}
您可以使用泛型而不是对象:
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;
}
通过在方法级别引入泛型类型变量,您可以定义应该返回的类型,这可以在答案中看到 您还可以将他的代码片段缩短为以下内容:
public <T> T findByPk(Class<T> clazz, Object pk) throws Exception {
return entity().find(clazz, pk);
}
public T findByPk(类clazz,对象pk)引发异常{
返回实体().find(clazz,pk);
}
因为:
catch
-块中抛出异常obj
-变量通过在方法级别引入泛型类型变量,您可以定义应该返回的类型,这可以在答案中看到 您还可以将他的代码片段缩短为以下内容:
public <T> T findByPk(Class<T> clazz, Object pk) throws Exception {
return entity().find(clazz, pk);
}
public T findByPk(类clazz,对象pk)引发异常{
返回实体().find(clazz,pk);
}
因为:
catch
-块中抛出异常obj
-变量如果你想使用一个现有的框架来实现这一点,请看一看spring数据如果你想使用一个现有的框架来实现这一点,请看一看spring数据谢谢你的输入,我还是个新手。我将付诸实践。谢谢你的意见,我还是个新手。我将付诸实践。当做