JBOSS CMP creates empty SELECT
alexis Oct 22, 2002 10:07 AMHi all,
One of my Entity bean is unable to create a valid SQL query when it call a Finder.
When I call findByAppIDAndItemID, JBoss fails to execute the query:
14:25:08,273 DEBUG [findByAppIDAndItemID] Executing SQL: SELECT FROM rating t0_r WHERE t0_r.appID = ? AND t0_r.itemID = ?
14:25:08,403 DEBUG [findByAppIDAndItemID] Find failed
java.sql.SQLException: Syntax error or access violation: You have an error in your SQL syntax near 'FROM rating t0_r WHERE t0_r.appID = 1 AND t0_r.itemID = 130' at line 1
at org.gjt.mm.mysql.MysqlIO.sendCommand(Unknown Source)
at org.gjt.mm.mysql.MysqlIO.sqlQueryDirect(Unknown Source)
.....
Why is there nothing between SELECT and FROM?
This is very curious because the ejbSelect below, which is nearly a copy of the Finder, works fine. It seems this bean can not use finders. But all of my other beans can. Can someone help to fix this strange issue?
Here is my Entity bean into ejb-jar.xml:
<ejb-name>Rating</ejb-name>
nix.prj.eovia.ejb.RatingHome
nix.prj.eovia.ejb.Rating
<local-home>nix.prj.eovia.ejb.RatingLocalHome</local-home>
nix.prj.eovia.ejb.RatingLocal
<ejb-class>nix.prj.eovia.ejb.RatingBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<prim-field>ratingID</prim-field>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>rating</abstract-schema-name>
<cmp-field>
<field-name>ratingID</field-name>
</cmp-field>
<cmp-field>
<field-name>appID</field-name>
</cmp-field>
<cmp-field>
<field-name>itemID</field-name>
</cmp-field>
<cmp-field>
<field-name>rating</field-name>
</cmp-field>
<query-method>
<method-name>findByAppIDAndItemID</method-name>
<method-params>
<method-param>int</method-param>
<method-param>int</method-param>
</method-params>
</query-method>
<result-type-mapping>Local</result-type-mapping>
<ejb-ql>SELECT OBJECT(r) FROM rating r WHERE r.appID=?1 AND r.itemID=?2</ejb-ql>
<query-method>
<method-name>ejbSelectRatingsByAppIDAndItemID</method-name>
<method-params>
<method-param>int</method-param>
<method-param>int</method-param>
</method-params>
</query-method>
<result-type-mapping>Local</result-type-mapping>
<ejb-ql>SELECT r.rating FROM rating r WHERE r.appID=?1 AND r.itemID=?2</ejb-ql>
I'm runnig JBoss 3.0.3 over MySQL 3.23.51-Max using InnoDB tables.
Thanks,
Alexis