EJB QL : incomplete generation of SQL query
aragorn94 Feb 10, 2003 12:50 PMI'm trying to deploy an entity bean with CMP, but it seems my SQL queries are not correctly generated from EJB SQL.
I use :
jboss 3.0.4 with tomcat-4.1.12
mySQL 3.23.36
Is it a bug or i missed some configuration ?
EJB SQL in ejb-jar.xml :
<query-method>
<method-name>findAll</method-name>
<method-params>
</method-params>
</query-method>
<result-type-mapping>Local</result-type-mapping>
<ejb-ql><![CDATA[select Object(o) from UserBean as o]]></ejb-ql>
<query-method>
<method-name>findByEmail</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<result-type-mapping>Local</result-type-mapping>
<ejb-ql><![CDATA[select Object(o) from UserBean as o where o.email = ?1]]></ejb-ql>
Begining of bean :
/**
* @ejb:bean name="User"
* jndi-name="jndi/UserBean"
* type="CMP"
* cmp-version="2.x"
*
* @ejb:pk class = "java.lang.String"
*
* @ejb:env-entry name = "DataSourceName" value = "MySqlDS"
*
* @ejb:finder
* signature="Collection findAll()"
* query="select Object(o) from UserBean as o"
* result-type-mapping="Local"
*
* @ejb:finder
* signature="User findByEmail(java.lang.String email)"
* query="select Object(o) from UserBean as o where o.email = ?1"
* result-type-mapping="Local"
*
* @jboss:table-name table-name = "user"
*
* @jboss:create-table create = "${jboss.create.table}"
*
* @jboss:datasource "MySqlDS"
*
*
**/
public abstract class UserBean implements EntityBean {
/**
* Context set by container
*/
private javax.ejb.EntityContext _entityContext;
/**
* @ejb:persistent-field
* @ejb:interface-method
* @ejb:pk-field
* @jboss:column-name name = "email"
*
**/
public abstract String getEmail();
/**
* @ejb:interface-method
*/
public abstract void setEmail(String email);
Trace :
18:44:08,152 ERROR [LogInterceptor] EJBException, causedBy:
javax.ejb.FinderException: Find failed: java.sql.SQLException: Syntax error or access violation: You have an error in your SQL syntax near 'FROM userbean t0_o WHERE t0_o.email = 'rick@rickhightower.com'' at line 1
at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:148)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntityCommand.execute(JDBCFindEntityCommand.java:44)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntity(JDBCStoreManager.java:541)
at org.jboss.ejb.plugins.CMPPersistenceManager.findEntity(CMPPersistenceManager.java:336)