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

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


该过程返回Object []的列表;

是否存在将Object []转换为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();

10-06 05:11
查看更多