I don't get this. The log says it is executing this query:

SELECT DISTINCT
     t0_bean.a_Boolean, t0_bean.an_Int, t0_bean.a_Long,
     t0_bean.a_Double, t0_bean.a_String
FROM CMP2ENTITY t0_bean
WHERE t0_bean.a_Boolean = true

So what is wrong with that where clause?  Are there any Oracle DBAs out 
there that can shed some light on to why this query is rejected.

-dain

Stephen Coy wrote:

> Reposted here at Dain's request...
> 
> Begin forwarded message:
> 
> 
>  
> Hi All,
>  
> I think I have found a bug when specifying your own finder method with 
> EJB QL and Oracle.
>  
> The problem is that in EJB QL any comparisons to a boolean field must be 
> made using the keywords TRUE or FALSE.  When I do this I get an 
> exception come back fromOracle telling me it doesn't know the field 
> name.  It seems that JBoss is not converting the TRUE or FALSE to a 1 or 
> 0 when it sends the SQL to Oracle, that is, "...wheremyBoolean = true" 
> is being sent to Oracle.
>  
> I have tried all possible sensible <jdbc-type> to <sql-type> tags in the 
> XML files.
>  
> Anyway,I have created a unit test package for this - it is attached.  It 
> plugs into the JBoss testsuite. To compile the test, you will need to 
> add the following to the jboss-all/testsuite/build.xml:
>  
> 
>   <target name="jars" description="Builds all jar files." depends="compile,
>                    ...
>                    _jars-dbtest,
>                    _jars-findWhereBoolean,
>                    ...
>                    _jars-bankiiop">
>   </target>
> 
>   <!-- findWhereBoolean test -->
>   <target name="_jars-findWhereBoolean">
>     <mkdir dir="${build.lib}"/>
> 
>     <!-- build findWhereBooleanTestClient.jar -->
>     <jar jarfile="${build.lib}/findWhereBooleanTestClient.jar" 
> manifest="${build.etc}/manifest.mf">
>       <fileset dir="${build.classes}">
>         <patternset refid="common.test.client.classes"/>
>         <include name="org/jboss/test/findWhereBoolean/interfaces/**"/>
>         <include name="org/jboss/test/findWhereBoolean/test/**"/>
>       </fileset>
>       <fileset dir="${build.resources}/findWhereBoolean">
>         <include name="*.*"/>
>       </fileset>
>     </jar>
> 
>     <!-- build findWhereBoolean.jar -->
>     <jar jarfile="${build.lib}/findWhereBoolean.jar">
>       <fileset dir="${build.classes}">
>         <patternset refid="common.test.application.classes"/>
>         <include name="org/jboss/test/findWhereBoolean/interfaces/**"/>
>         <include name="org/jboss/test/findWhereBoolean/bean/**"/>
>       </fileset>
>       <fileset dir="${build.resources}/findWhereBoolean">
>         <include name="**/*.xml"/>
>       </fileset>
>     </jar>
>   </target>
> 
>  
> 
> If you're interested, the actual JBoss server.log error message and 
> stack trace is:
>  
> 
> 2002-05-13 18:18:45,506 DEBUG 
> [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.CMP2Entity.findAllWhereBooleanIsTrue] 
> Executing SQL: SELECT DISTINCT t0_bean.a_Boolean, t0_bean.an_Int, 
> t0_bean.a_Long, t0_bean.a_Double, t0_bean.a_String FROM CMP2ENTITY 
> t0_bean WHERE t0_bean.a_Boolean = true
> 2002-05-13 18:18:45,516 DEBUG 
> [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.CMP2Entity.findAllWhereBooleanIsTrue] 
> Find failed
> java.sql.SQLException: ORA-00904: invalid column name
> 
>  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
>  at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
>  at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
>  at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
>  at 
> oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:651)
>  at 
> oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2117) 
> 
>  at 
> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2331) 
> 
>  at 
> 
>oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:422)
> 
> 
>  at 
> 
>oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:366)
> 
> 
>  at 
> 
>org.jboss.resource.adapter.jdbc.local.PreparedStatementInPool.executeQuery(PreparedStatementInPool.java:862)
> 
> 
>  at 
> 
>org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:107)
> 
> 
>  at 
> 
>org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntitiesCommand.execute(JDBCFindEntitiesCommand.java:40)
> 
> 
>  at 
> 
>org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntities(JDBCStoreManager.java:466)
> 
> 
>  at 
> 
>org.jboss.ejb.plugins.CMPPersistenceManager.findEntities(CMPPersistenceManager.java:348)
> 
> 
>  at 
> 
>org.jboss.resource.connectionmanager.CachedConnectionInterceptor.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:1111)
> 
> 
>  at 
> org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:73) 
> 
>  at 
> 
>org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:230)
> 
> 
>  at 
> 
>org.jboss.resource.connectionmanager.CachedConnectionInterceptor.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:727)
>  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:241)
>  at sun.rmi.transport.Transport$1.run(Transport.java:152)
>  at java.security.AccessController.doPrivileged(Native Method)
>  at sun.rmi.transport.Transport.serviceCall(Transport.java:148)
>  at 
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:465)
>  at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:706) 
> 
>  at java.lang.Thread.run(Thread.java:484)
> 
>  
> 
> I would appreciate any fix or workaround.
> Thanks,
> Evan.
>  
> 
> Evan Toliopoulos
> Whitesmiths Australia Pty Ltd
> Level 6, 44 Miller Street
> North Sydney, 2060, Australia
> Tel: + 61 2 8912 1728
> Fax: + 61 2 8912 1701
> Web: http://www.whitesmiths.com.au
> 
>  


-- 
xxxxxxxxxxxxxxxxxxxxxxxxx
Dain Sundstrom
Chief Architect, JBossCMP
JBoss Group, LLC
xxxxxxxxxxxxxxxxxxxxxxxxx



_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to