JPA本机查询返回类

use*_*234 6 java jpa

在JPA中,我定义了一个将返回String的本机sql,

@NamedNativeQuery(name = "alert", 
query = " select distinct c.accountId from account c ", 
        resultClass = String.class)
Run Code Online (Sandbox Code Playgroud)

错误信息是

org.hibernate.MappingException: Unknown entity: java.lang.String
Run Code Online (Sandbox Code Playgroud)

有线索吗?谢谢

ese*_*sej 18

@SqlResultSetMappings({
    @SqlResultSetMapping(name = "alertMapping", columns = {
        @ColumnResult(name = "accountId")})
})
@NamedNativeQuery(name = "alert", 
query = " select distinct c.accountId from account c ", 
        resultSetMapping = "alertMapping")
Run Code Online (Sandbox Code Playgroud)

用法:

EntityManager em = ...... / injected / etc
TypedQuery<String> query = em.createNamedQuery("alert", String.class);
List<String> accountIds = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

(未经检查的语法,但我希望基本的想法来)

对于NamedNativeQueries,只有在结果实际映射到实体时才能使用resultClass.也可以不指定结果映射,在这种情况下,您将获得一个ListObject [].列表的每个元素都是一条记录,您必须将每个Object显式地转换为您想要的类型.嗯,最后一部分可能只适用于NativeQueries而不是Named - 抱歉当前不确定.


And*_*rey 1

不要包含resultClass在查询声明中

  • 我不想走这条路。字符串会更简单。 (2认同)