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