在JPA 2.1中,有一个称为“结果集映射”的功能。
基本上,您必须定义一个POJO类,该类将保存结果值(所有值必须使用构造函数传递):
public class IdResult{ private Object id; public IdResult(Object id){ this.id = id; } public Long getLongId(){ return (Long)id; }}然后,您必须在您的一个实体上声明映射(无论在哪个实体上,它都必须是declated
@Entity):
@SqlResultSetMapping(name="IdMapping", classes = { @ConstructorResult(targetClass = IdResult.class, columns = {@ColumnResult(name="id")})})您必须在查询中使用别名以匹配
@ColumnResult名称:
select te.event_id as id...
最后在查询创建中使用:
Query query = entityManager.createNativeQuery(q, IdMapping.class);return (List<IdResult>) query.getResultList();
然后,您将在服务层中使用
getLongId();



