2015-01-27 4 views
0

Spring 어플리케이션에서 저장 프로 시저를 실행하기 위해 최대 절전 모드 JPA를 사용하고 있지만 아래 오류가 발생합니다. StoredPrcoedure에는 매개 변수가 없으므로 아래의 오류는 직관적이지 않습니다. 이 문제를 해결 한 모든 Google 검색 결과는 없었고 봄/겨울 절기 문서에 대한 언급도 도움이되지 않았습니다. 이 문제에 대한 도움은 크게 감사하겠습니다. 내가 수정할 수 없습니다Spring JPA를 사용한 StoredProcedure 호출이 오류가 발생했습니다.

@Entity 
@NamedStoredProcedureQuery(name = "getCountries", procedureName = "spLT_Countries", resultClasses = Country.class) 
public class Country implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name = "countryid") 
    private Long id; 

    @Column(name = "ISOCountrycode") 
    private String iso2; 

    @Column(name="Country") 
    private String name; 
     : 
     : 
} 
MS SQL Server의

저장 프로 시저, 기존 : 나는

Error:

org.hibernate.procedure.NoSuchParameterException: Could not locate parameter registered using that position [1] at org.hibernate.procedure.internal.ProcedureCallImpl.getParameterRegistration(ProcedureCallImpl.java:338) at org.hibernate.procedure.internal.ProcedureOutputsImpl.getOutputParameterValue(ProcedureOutputsImpl.java:68) at org.hibernate.jpa.internal.StoredProcedureQueryImpl.getOutputParameterValue(StoredProcedureQueryImpl.java:276)

다음과 같이

Entity 클래스 .. 내가 잘못이 시점에서 완전히 붙어있는 중이 야 이해할 수없는 것 .

내가 더 발전 할 방법이 없기 때문에 도움을 주시면 대단히 감사하겠습니다. 당신은 country 클래스에서 불필요한 주석을 제거해야 할 수 있습니다

javax.persistence.Query query=em.createNativeQuery("exec getCountries"); 
    List<country> results = query.getResultList(); 

:

+0

어떻게 저장 프로 시저를 호출합니까? – zeroflagL

+0

프로 시저를 호출하는 JPA 주석 - @NamedStoredProcedureQuery (name = "getCountries", procedureName = "spLT_Countries", resultClasses = Country.class)를 사용하고 있는데, 매개 변수 매핑에 실패합니다. – slad

+0

'@ NamedStoredProcedureQuery'는 쿼리를 선언하기 만합니다. 그것은 그것을 호출하지 않습니다. – zeroflagL

답변

0

사용 JPAEntityManager는 다음과 같이 저장 프로 시저의 결과를 반환합니다.

+0

감사합니다. Farhang, 작동하지만 EntityManager를 직접 사용하는 대신 JPA 주석을 사용하고 싶습니다. – slad

+0

이것에 대한 어떤 업데이 트? – LazyTechie

관련 문제