EJB 2.0 finders with xdoclet in JBoss 4.0.2
rfasciolo Sep 12, 2005 4:28 AMI'm trying to develop some entity beans for running with jboss using xdoclet.
When I try to deploy them in jboss I get this error:
2005-09-10 12:37:36,859 WARN [org.jboss.ejb.EJBDeployer.verifier] EJB spec violation:
Bean : Subsites
Method : public abstract Collection findBySite(Long) throws FinderException, RemoteException
Section: 10.5.6
Warning: Every finder method except findByPrimaryKey(key) must be associated with a query element in the deployment descriptor.
This is the xdoclet definition of that ejb:
/**
* @ejb.bean name="Subsites"
* display-name="Name for Subsites"
* description="Description for Subsites"
* jndi-name="ejb/katti/sites/Subsites"
* type="CMP"
* cmp-version="2.x"
* view-type="remote"
*
* @ejb.finder signature="java.util.Collection findBySite(Long id_site)"
* query="select object(o) from Subsites o where o.id_site=?1"
*
* @ejb.transaction
* type="Required"
*/
This is the related part of the ejb-jar.xml:
<![CDATA[Description for Subsites]]>
<display-name>Name for Subsites</display-name>
<ejb-name>Subsites</ejb-name>
com.rf.katti.ejb.sites.SubsitesHome
com.rf.katti.ejb.sites.Subsites
<ejb-class>com.rf.katti.ejb.sites.SubsitesBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>com.rf.katti.ejb.sites.SubsitesPK</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Subsites</abstract-schema-name>
<cmp-field >
<![CDATA[Getter for CMP Field id]]>
<field-name>id</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field id_site]]>
<field-name>id_site</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field name]]>
<field-name>name</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field defaultLanguage]]>
<field-name>defaultLanguage</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field createstmp]]>
<field-name>createstmp</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field updatestmp]]>
<field-name>updatestmp</field-name>
</cmp-field>
<query-method>
<method-name>findBySite</method-name>
<method-params>
<method-param>Long</method-param>
</method-params>
</query-method>
<ejb-ql><![CDATA[select object(o) from Subsites o where o.id_site=?1]]></ejb-ql>
<!-- Write a file named ejb-finders-SubsitesBean.xml if you want to define extra finders. -->
<![CDATA[Description for Subsites]]>
<display-name>Name for Subsites</display-name>
<ejb-name>Subsites</ejb-name>
com.rf.katti.ejb.sites.SubsitesHome
com.rf.katti.ejb.sites.Subsites
<ejb-class>com.rf.katti.ejb.sites.SubsitesBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>com.rf.katti.ejb.sites.SubsitesPK</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Subsites</abstract-schema-name>
<cmp-field >
<![CDATA[Getter for CMP Field id]]>
<field-name>id</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field id_site]]>
<field-name>id_site</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field name]]>
<field-name>name</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field defaultLanguage]]>
<field-name>defaultLanguage</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field createstmp]]>
<field-name>createstmp</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Getter for CMP Field updatestmp]]>
<field-name>updatestmp</field-name>
</cmp-field>
<query-method>
<method-name>findBySite</method-name>
<method-params>
<method-param>Long</method-param>
</method-params>
</query-method>
<ejb-ql><![CDATA[select object(o) from Subsites o where o.id_site=?1]]></ejb-ql>
<!-- Write a file named ejb-finders-SubsitesBean.xml if you want to define extra finders. -->
jbosscmp-jdbc.xml:
<ejb-name>Subsites</ejb-name>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>id_site</field-name>
</cmp-field>
<cmp-field>
<field-name>name</field-name>
</cmp-field>
<cmp-field>
<field-name>defaultLanguage</field-name>
</cmp-field>
<cmp-field>
<field-name>createstmp</field-name>
</cmp-field>
<cmp-field>
<field-name>updatestmp</field-name>
</cmp-field>
<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
<ejb-name>Subsitelanguages</ejb-name>
<cmp-field>
<field-name>id_subsite</field-name>
</cmp-field>
<cmp-field>
<field-name>id_language</field-name>
</cmp-field>
<cmp-field>
<field-name>createstmp</field-name>
</cmp-field>
<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
jboss.xml:
<ejb-name>Subsites</ejb-name>
<jndi-name>ejb/katti/sites/Subsites</jndi-name>
<method-attributes>
</method-attributes>
I've written also other finders, but they works only if the finder method takes no parameters (for example "java.util.Collection findAll()"), otherwise I get that error. Can you help me?