java - JPA 命名存储过程返回简单对象

标签 java postgresql jpa stored-procedures eclipselink

我在 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();

关于java - JPA 命名存储过程返回简单对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703299/

相关文章:

postgresql - 亚马逊 API 网关到 lambda 到 rds?

java - OpenJPA 左外连接条件

java - JPA 一对多关系中外键分配给 NULL

java - 如何使用 Bluemix Liberty 运行时将 EntityManager 注入(inject) EJB 中?

Java 8 : How to elegantly remove redundant outer objects on base of inner object ID and date in Java 8?

java - 如何将文件的内容添加到数组列表中

sql - 将相同的 id 分配给具有相同数据组合的行

postgresql - postgresql SERIAL 是否保证单个插入语句内没有间隙?

java - "static synthetic"是什么意思?

java - 有没有办法动态地将 id 插入 Thymeleaf 变量中?