JPA 具有以下签名的方法:
<T> CriteriaQuery<T> createQuery(Class<T> resultClass);
resultClass
当我的类型本身是类型参数化时,如何调用此方法?
例如:
public class ResultDto<T> {
...
}
我尝试了以下但没有奏效:
createQuery(ResultDto<String>.class);
JPA 具有以下签名的方法:
<T> CriteriaQuery<T> createQuery(Class<T> resultClass);
resultClass
当我的类型本身是类型参数化时,如何调用此方法?
例如:
public class ResultDto<T> {
...
}
我尝试了以下但没有奏效:
createQuery(ResultDto<String>.class);
对于泛型类型(例如, , ...)Class
的任何特定实例化都没有实例。ResultDto<String>
ResultDto<Integer>
ResultDto<MyObject>
无论该类是否是泛型的,总是只有一个Class
实例代表该类的原始版本。在你的情况下,它是ResultDto.class
.
您可以使用createQuery(ResultDto.class)
原因是当您要创建 ResultDto 的对象时,您将始终使用类型参数创建它,例如
ResultDTo<String> rs = new ResultDTo<String>()
,因此将在<T> CriteriaQuery<T> createQuery(Class<T> resultClass);