0

JPA 具有以下签名的方法:

<T> CriteriaQuery<T> createQuery(Class<T> resultClass);

resultClass当我的类型本身是类型参数化时,如何调用此方法?

例如:

public class ResultDto<T> {
...
}

我尝试了以下但没有奏效:

createQuery(ResultDto<String>.class);
4

2 回答 2

0

对于泛型类型(例如, , ...)Class的任何特定实例化都没有实例。ResultDto<String>ResultDto<Integer>ResultDto<MyObject>

无论该类是否是泛型的,总是只有一个Class实例代表该类的原始版本。在你的情况下,它是ResultDto.class.

于 2013-07-01T19:03:29.767 回答
0

您可以使用createQuery(ResultDto.class)

原因是当您要创建 ResultDto 的对象时,您将始终使用类型参数创建它,例如 ResultDTo<String> rs = new ResultDTo<String>() ,因此将在<T> CriteriaQuery<T> createQuery(Class<T> resultClass);

于 2013-07-01T19:11:57.063 回答