@SqlResultSetMappings({
@SqlResultSetMapping(name = "alertMapping", columns = {
@ColumnResult(name = "accountId")})
})
@NamedNativeQuery(name = "alert",
query = " select distinct c.accountId from account c ",
resultSetMapping = "alertMapping")
用法:
EntityManager em = ....../injected/etc
TypedQuery<String> query = em.createNamedQuery("alert", String.class);
List<String> accountIds = query.getResultList();
(未检查的语法,但我希望的基本想法来自通过)
对于NamedNativeQueries你只能当结果实际映射到实体时使用resultClass。也可以不指定结果映射,在这种情况下,您会得到Object []的List
。列表中的每个元素都将是一条记录,并且您必须明确地将每个对象转换为您想要的类型。嗯,最后一部分可能只适用于NativeQueries而不是命名 - 现在抱歉不确定。
如果我删除它,它会得到另一个错误。 引起:org.hibernate.cfg.NotYetImplementedException:纯原生标量查询尚不支持 – user595234 2012-03-18 22:17:02
所以尝试Account.class – Andrey 2012-03-18 22:19:12
我不想这样。字符串会更简单。 – user595234 2012-03-18 22:21:49