【发布时间】:2019-06-04 04:38:12
【问题描述】:
我需要使用 entityManager 选择 本机查询。我找到了方法:
public Query createNativeQuery(String sqlString, Class resultClass);
并尝试使用它:
Query query = em.createNativeQuery(readyQuery, SmevMessage.class);
return query.getResultList();
但 IDE 仍然突出显示为警告:
那么为什么会存在这种方法呢?我应该怎么做才能解决它?
【问题讨论】:
-
这是警告而不是错误。您无法修复它,因为这里的 API 不一致。
Query不是。如果您查看createQuery方法(对于 JPQL),它会返回TypedQuery而不是这个。您可以使用@SuppressWarning注释来隐藏警告,但这就是您所能做的。 -
是的,当我使用
TypedQuery q = em.createQuery()时没有警告。但是方法不同public Query createNativeQuery(String sqlString);和public Query createNativeQuery(String sqlString, Class resultClass);? -resultClass好像在暗示我应该输入类型 -
如前所述,
createQuery用于 JPQL... 我提到它是为了强调EntityManager的 API 中的不一致。 -
您的持久性提供程序实例化提供的
resultClass的托管实体对象,并在您调用getSingleResult或getResultList方法时返回它们。但正如我在下面的回答中所解释的,该方法只返回一个无类型的Query。这就是您的 IDE 显示警告的原因,您可以忽略它。
标签: java jpa entitymanager