2017-01-17 6 views
0

저는 컬럼을 반환하는 DB Postgres에 프로 시저를 저장했습니다.JPA NamedStoredProcedure는 간단한 객체를 반환합니다.

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

이 절차는 Object [];

Object []를 MyRow 개체로 전송할 수있는 방법이 있습니까?

나는 지속성 공급자로 EclipseLink 2.6.0을 사용하고 있습니다. MyRow는 아니요 엔티티가이므로 resultClasses = MyRow.classes을 사용할 수 없습니다. eclipselink에서 예외를 throw하기 때문에 (MyRow는 알려진 엔티티 유형이 아닙니다.)

+1

경우 그것은 말할 않는 " resultClass "는 엔티티 여야 만합니까? 그것은 –

+0

이 아닙니다. 그러나 예외를 사용하면 예외가 발생합니다. MyRow는 JPA 공급자가 예외와 함께 제공하는 알려진 엔터티 클래스 –

+0

이 아닙니까? –

답변

1

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)}) 
}) 

그런 다음 쿼리에서 사용할 것 JPA 스펙에

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

감사합니다! 그것은 작동합니다! 하지만 createNamedStoredProcedureQuery (String, String), createNamedStoredProcedureQuery (String) 만 찾지 못했기 때문에 명명 된 저장 프로 시저의 정의에 결과 매핑을 추가했습니다. '@NamedStoredProcedureQuery (name = "ContrattoVen.servizilistino", procedureName = "servizilistino ", resultSetMappings = {"ServiziAggiuntiviMapping "}, 매개 변수 = { @StoredProcedureParameter (mode = ParameterMode.IN, type = Date.class, name ="dataval ") } )' –