2012-07-17 5 views
1

EJB 코드에서 문제가 있습니다.java.lang.IllegalArgumentException : 이름의 NamedQuery : EJB에 MY_FUNCTION이 없습니다.

@Entity 
@NamedStoredFunctionQuery(name = "MY_FUNCTION", functionName = "apipay", 
    parameters = { 
     @StoredProcedureParameter(
      queryParameter = "consubflag", name = "consubflag", direction = Direction.IN, type=String.class), 
     @StoredProcedureParameter(
      queryParameter = "contrno", name = "contrno", direction = Direction.IN, type=String.class), 
     @StoredProcedureParameter(
      queryParameter = "username", name = "username", direction = Direction.IN, type=String.class) 
    }, 
    returnParameter = 
     @StoredProcedureParameter(
      queryParameter = "paymentid", type = String.class) 
) 
public class MyPayment implements Serializable { 

    @Id 
    String paymentid; 
    String consubflag; 
    String contrno; 
    String username; 
} 

에 따라 내가 부르고있는에서 EJB 코드 : 다음은 웹 로직 10.3.3에 배포 내 코드입니다

: 다음

Query q = tabsEntityManager.createNamedQuery("MY_FUNCTION"); 
q.setParameter("consubflag", "S"); 
q.setParameter("contrno", contrno); 
q.setParameter("username", "ATMGTW"); 

paymentId = (String) q.getSingleResult(); 

나의이 persistence.xml이다

<persistence-unit name="PU1" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>jdbc/myDS1</jta-data-source> 
     <class>com.MyPayment</class> 
</persistence-unit> 
<persistence-unit name="PU2" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>jdbc/myDS2</jta-data-source> 
     <class>com.MyRequest</class> 
    </persistence-unit> 
</persistence> 

전체 오류 스택 추적은 다음과 같습니다

java.lang.IllegalArgumentException: NamedQuery of name: My_FUNCTION not found. 
     at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getDatabaseQueryInternal(EJBQueryImpl.java:545) 
     at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameterInternal(EJBQueryImpl.java:1145) 
     at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameter(EJBQueryImpl.java:1032) 
     at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameter(EJBQueryImpl.java:71) 
     at com.warid.es.onelink.facade.TopUpControllerBean.postPaidPayment(TopUpControllerBean.java:594) 
,

Java SE 앱에서 동일한 코드를 시도했지만 정상적으로 작동합니다.

답변

1

NamedStoredFunctionQuery은 EclipseLink 2.3.x에 도입되었으며 documentation에 따라 WebLogic 10.3.3.0은 EclipseLink 2.0.2와 함께 제공되었습니다.

그래서 배치 중에 주석을 무시하고 @NamedStoredFunctionQuery에 정의 된 쿼리를 찾을 수 없습니다.

+0

감사합니다. weblogic 10.3.3에서 EclipseLink 2.3.x 지원을 활성화 할 수 있습니까? – ImranRazaKhan

+0

너무 쉽게 보이지 않습니다. http://wiki.eclipse.org/EclipseLink/Examples/JPA/WebLogic_Web_Tutorial (대답과 동일) 링크 뒤에 JPA 2 구현을 사용하는 방법에 대한 몇 가지 연결 지침을 찾을 수 있습니다. –