Unknown query error on finder method
hendrik1 May 5, 2004 6:24 AMHi all
I am quite new to J2EE and JBoss.
Using JBuilderX and JBoss 3.2.3 (connected to Oracle), I created a CMP entity bean with a custom finder method.
Everything deploys fine, but as soon as I make a call to the finder method through my SessionFacade session bean, I get the following exception:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.ServerException: EJBException:; nested exception is: javax.ejb.EJBException: Unknown query: public abstract java.util.Collection kernel.CifCommonHome.findByCustNr(int) throws javax.ejb.FinderException
I've been hacking through all the source and xml files, but can find absolutely no solution.
my ejb-jar.xml file:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <display-name>KernelEJB</display-name> <enterprise-beans> <entity> <display-name>CifCommon</display-name> <ejb-name>CifCommon</ejb-name> <local-home>kernel.CifCommonHome</local-home> <local>kernel.CifCommon</local> <ejb-class>kernel.CifCommonBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>kernel.CifCommonPK</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>CifCommon</abstract-schema-name> <cmp-field> <field-name>custNr</field-name> </cmp-field> <cmp-field> <field-name>custShortName</field-name> </cmp-field> <query> <query-method> <method-name>findByCustNr</method-name> <method-params> <method-param>int</method-param> </method-params> </query-method> <ejb-ql>SELECT OBJECT(o) FROM CifCommon o WHERE o.custNr = ?1</ejb-ql> </query> </entity> <session> <display-name>CifCommonSessionFacade</display-name> <ejb-name>CifCommonSessionFacade</ejb-name> <home>kernel.CifCommonSessionFacadeHome</home> <remote>kernel.CifCommonSessionFacade</remote> <ejb-class>kernel.CifCommonSessionFacadeBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> <ejb-local-ref> <ejb-ref-name>ejb/cifCommon</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <local-home>kernel.CifCommonHome</local-home> <local>kernel.CifCommon</local> <ejb-link>CifCommon</ejb-link> </ejb-local-ref> </session> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>CifCommon</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> <container-transaction> <method> <ejb-name>CifCommonSessionFacade</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>
And my jbosscmp-jdbc.xml file:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd"> <jbosscmp-jdbc> <defaults> <datasource>java:OracleDS</datasource> <datasource-mapping>Oracle8</datasource-mapping> </defaults> <enterprise-beans> <entity> <ejb-name>CifCommon</ejb-name> <datasource>java:OracleDS</datasource> <datasource-mapping>Oracle9i</datasource-mapping> <table-name>CI.CIF_COMMON</table-name> <cmp-field> <field-name>custNr</field-name> <column-name>CUST_N</column-name> </cmp-field> <cmp-field> <field-name>custShortName</field-name> <column-name>CUST_SHORT_NAME</column-name> </cmp-field> </entity> </enterprise-beans> </jbosscmp-jdbc>
Please help as this is driving me up the wall...
Thanx
Hendrik