JBossCmp and Custom Finders
cummings Mar 4, 2003 2:16 PM(This was sent as a reply to Jboss 3.0 Alpha and Custom Finders but doesn't seem to want to post, so I'm submitting it as a new topic)
I'm getting the following deployment error from JBoss for my ejbql. Have looked at examples as well as spec, and don't really see what JBoss (3.0.4) doesn't like about it.
Any suggestions will be greatly appreciated!
Error from JBoss:
14:08:25,265 INFO [MainDeployer] Starting deployment of package: file:/C:/Frame
works/JBoss/jboss-3.0.4_tomcat-4.1.12/server/default/deploy/ejb-test.jar
14:08:25,375 INFO [EjbModule] Creating
14:08:25,390 INFO [EjbModule] Deploying TWUserRole
14:08:25,406 INFO [EjbModule] Deploying ManageTWUserRole
14:08:25,406 INFO [EjbModule] Deploying test/SequenceGenerator
14:08:25,437 INFO [EjbModule] Created
14:08:25,437 INFO [EjbModule] Starting
14:08:30,859 WARN [ServiceController] Problem starting service jboss.j2ee:jndiName=ejb/test/TWUserRoleHome,service=EJB
org.jboss.deployment.DeploymentException: Error compiling ejbql; - nested throwable: (org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "TWUSERROLE" at line 1, column 23.
Was expecting one of:
"IN" ...
<ABSTRACT_SCHEMA> ...
)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.(JDBCEJBQLQuery.java:46)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCCommandFactory.createEJBQLQuery(JDBCCommandFactory.java:44)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCQueryManager.start(JDBCQueryManager.java:218)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.startStoreManager(JDBCStoreManager.java:463)
==========================================================
Bean code and XDoclet header:
/**
* This is a user role bean. It is an example of how to use the XDoclet tags.
*
* @ejb:bean
* name="test/TWUserRole"
* type="CMP"
* jndi-name="ejb/test/TWUserRoleHome"
*
* @ejb:data-object extends="test.interfaces.AbstractData"
* setdata="false"
*
* @ejb:finder signature="java.util.Collection findUserRolesByUserId(int userId)" unchecked="true" query="SELECT OBJECT(u) FROM TWUSERROLE AS u WHERE u.USER_USERID = ?1"
*
* @jboss:table-name "TWUSERROLE"
* @jboss:create-table "${jboss.create.table}"
* @jboss:remove-table "${jboss.remove.table}"
* @jboss:tuned-updates "${jboss.tuned.updates}"
* @jboss:read-only "${jboss.read.only}"
*
* @version $Revision: 1.0 $
* @author $Author: Charles $
*
*/
public abstract java.util.Collection findUserRolesByUserId( int userId ) throws FinderException;
=============================================================================
Output after running ant:
ejb-jar.xml:
<ejb-class>test.entity.TWUserRoleCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>test.interfaces.TWUserRolePK</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>test/TWUserRole</abstract-schema-name>
<cmp-field >
<![CDATA[Retrieve the TestEntity's Name.]]>
<field-name>name</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Retrieve the TestEntity's id.]]>
<field-name>id</field-name>
</cmp-field>
<query-method>
<method-name>findUserRolesByUserId</method-name>
<method-params>
<method-param>int</method-param>
</method-params>
</query-method>
<ejb-ql><![CDATA[SELECT OBJECT(u) FROM TWUSERROLE AS u WHERE u.USER_USERID = ?1]]></ejb-ql>