Bugs item #567441, was opened at 2002-06-11 17:27 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=376685&aid=567441&group_id=22866
Category: JBossCMP Group: v3.0 Rabbit Hole Status: Open Resolution: None Priority: 5 Submitted By: Andras Soltesz (soltesz_andras) Assigned to: Nobody/Anonymous (nobody) Summary: EJB QL finder fails to map boolean,MySQL Initial Comment: Operating system: Windows Me JDK version: 1.3.1_03 Server trace: ------------------------------------------------------------------ 2002-06-11 17:03:05,330 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Map.findBig Maps] Executing SQL: SELECT t0_m.id FROM MapTable t0_m WHERE t0_m.bigMap = true 2002-06-11 17:03:05,660 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Map.findBig Maps] Find failed java.sql.SQLException: Column not found: Unknown column 'true' in 'where clause' at org.gjt.mm.mysql.MysqlIO.sendCommand (MysqlIO.java:497) at org.gjt.mm.mysql.MysqlIO.sqlQueryDirect (MysqlIO.java:550) at org.gjt.mm.mysql.Connection.execSQL (Connection.java:885) at org.gjt.mm.mysql.PreparedStatement.executeQuery (PreparedStatement.java:288) at org.jboss.resource.adapter.jdbc.local.LocalPreparedStatement. executeQuery(LocalPreparedStatement.java:289) at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.ex ecute(JDBCAbstractQueryCommand.java:107) at org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntitiesCommand.exec ute(JDBCFindEntitiesCommand.java:40) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntities (JDBCStoreManager.java:473) at org.jboss.ejb.plugins.CMPPersistenceManager.findEntities (CMPPersistenceManager.java:348) at org.jboss.resource.connectionmanager.CachedConnectionInterc eptor.findEntities(CachedConnectionInterceptor.java:284) at org.jboss.ejb.EntityContainer.find (EntityContainer.java:662) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome (EntityContainer.java:1116) at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome (AbstractInterceptor.java:73) at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHo me(EntitySynchronizationInterceptor.java:257) at org.jboss.resource.connectionmanager.CachedConnectionInterc eptor.invokeHome(CachedConnectionInterceptor.java:176) at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome (EntityInstanceInterceptor.java:134) at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome (EntityLockInterceptor.java:79) at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome (EntityCreationInterceptor.java:44) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext (AbstractTxInterceptor.java:98) at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions (TxInterceptorCMT.java:167) at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome (TxInterceptorCMT.java:52) at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome (SecurityInterceptor.java:104) at org.jboss.ejb.plugins.LogInterceptor.invokeHome (LogInterceptor.java:109) at org.jboss.ejb.EntityContainer.invokeHome (EntityContainer.java:487) at org.jboss.ejb.Container.invoke(Container.java:726) at org.jboss.ejb.EntityContainer.invoke (EntityContainer.java:1055) at org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:491) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke (JRMPInvoker.java:364) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch (UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run (Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall (Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run (TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479) ----------------------------------------------------------------------------------- Reproduction of the bug: I have a simple entity bean (Map) with a boolean property called bigMap. The entity is stored in a MySQL table called MapTable. I have a finder method defined for the entity in the ejb-jar.xml. The definition of the query: <query> <query-method> <method-name>findBigMaps</method-name> <method-params/> </query-method> <ejb-ql> SELECT OBJECT(m) FROM MapBean AS m WHERE m.bigMap=true </ejb-ql> </query> -The deployment goes all right (including the automatic table creation in the MySQL database). -Object creation through the home interface is OK, the boolean property is mapped to a TINYINT database field (0-true, 1-false). I checked it on the MySQL console, the values are correctly translated during the creation of a new object. -When I want to find the objects which have the bigMap property set to true (with the findBigMap finder method declared in the ejb- jar.xml) I get the exception aforementioned. When I use the Hypersonic database with table autocreate, the finder works perfectly. This can mean that the EJB QL boolean value mapping (1=true) doesn't work only with the MySQL database. In case of the Hypersonic there might not need to translate booleans, that might be why the feature developers didn't notice the bug earlier. This finder worked perfectly when I used this bean as an 1.1 entity bean and I had this finder defined in the jaws.xml. When I rewrote the bean as an EJB 2.0 compliant bean I had to use the jbosscmp-jdbc.xml instead of the jaws.xml and define the finder in the ejb-jar.xml as a standard EJB QL finder method. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=376685&aid=567441&group_id=22866 _______________________________________________________________ Don't miss the 2002 Sprint PCS Application Developer's Conference August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development