Java JPA namedStoredProcess返回简单对象

Java JPA namedStoredProcess返回简单对象,java,postgresql,jpa,stored-procedures,eclipselink,Java,Postgresql,Jpa,Stored Procedures,Eclipselink,我在DB Postgres上存储了一个过程,它返回一些列 List<Object[]> listrecord = this.em.createNamedStoredProcedureQuery("ContrVen.services") .setParameter("dataval", datavalidita).getResultList(); 该过程返回对象[]的列表 是否存在将对象[]强制转换为MyRow对象的方法 我正在使用EclipseLink 2.6.

我在DB Postgres上存储了一个过程,它返回一些列

List<Object[]> listrecord = this.em.createNamedStoredProcedureQuery("ContrVen.services")
          .setParameter("dataval", datavalidita).getResultList();
该过程返回对象[]的列表

是否存在将对象[]强制转换为MyRow对象的方法


我正在使用EclipseLink 2.6.0作为持久性提供者。MyRow不是实体,因此无法使用resultClasses=MyRow.classes,因为eclipselink引发异常MyRow不是已知的实体类型。

JPA 2.1规范3.10.16.2.2中的示例:

@SqlResultSetMapping(name="CustomerDetailsResult",
    classes={
        @ConstructorResult(targetClass=com.acme.CustomerDetails.class,
            columns={
                @ColumnResult(name="id"),
                @ColumnResult(name="name"),
                @ColumnResult(name="orderCount"),
                @ColumnResult(name="avgOrder", type=Double.class)})
})
然后在查询中使用它

List<CustomerDetails> listrecord = this.em.createNamedStoredProcedureQuery("ContrVen.services", "CustomerDetailsResult")
          .setParameter("dataval", datavalidita).getResultList();

在JPA规范中,哪里说resultClass必须是实体?没有,但如果我使用它,就会抛出一个异常:MyRow不是一个已知的实体类,哪个JPA提供者会出现这个异常?eclipselink,我把它添加到问题中;如果这不是一个实体,您需要定义一个SqlResultsMapping并指定一个ConstructorResult,告诉提供者哪些字段进入POJO构造函数。谢谢!成功了!但是我没有找到CreateNamedStoredProcedureRequestyString,String,只有CreateNamedStoredProcedureRequestyString,所以我在命名存储过程的定义中添加了结果映射:@NamedStoredProcedureRequestName=ContrattoVen.servizilistino,ProcedureRename=servizilistino,resultSetMappings={ServiziAgginTiviMapping},parameters={@StoredProcedureParametermode=ParameterMode.IN,type=Date.class,name=dataval}