1
我在EJB代码中遇到了一个问题。下面是我的代码,它部署在Weblogic的10.3.3:java.lang.IllegalArgumentException:在EJB中找不到名称为MY_FUNCTION的NamedQuery
@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代码:
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应用程序中尝试了相同的代码,它工作正常。
感谢您的更新,我们可以在weblogic 10.3.3中启用EclipseLink 2.3.x支持吗? – ImranRazaKhan 2012-07-17 07:43:24
看起来不太容易。您可以在链接后面找到一些关于使用JPA 2实现的相关说明:http://wiki.eclipse.org/EclipseLink/Examples/JPA/WebLogic_Web_Tutorial(与答案中相同)。 – 2012-07-17 08:04:49