[ http://jira.jboss.com/jira/browse/JBAS-1504?page=history ]

Scott M Stark updated JBAS-1504:
--------------------------------

    Priority: Major  (was: Blocker)

> type mapping for boolean in finder wrong
> ----------------------------------------
>
>          Key: JBAS-1504
>          URL: http://jira.jboss.com/jira/browse/JBAS-1504
>      Project: JBoss Application Server
>         Type: Bug
>   Components: CMP service
>     Versions:  JBossAS-4.0.1 SP1
>  Environment: JDK1.5.0-update1; JBoss 4.0.1SP1; MaxDB 7.5.00.23-1; jdbc 
> driver: sapdbc-7_6_00_00_3264.jar; Linux Debian Sarge
>     Reporter: Ingo Bruell

>
>
> i have defined a finder in which i will test a boolean attribute, but i got a 
> database error that the datatype must be compatibel.
> In EJBQL i have tested "attribute = false" and the generated SQL says 
> "attribute = 0", that is wrong cause MaxDB wants "attribute = false".
> I have changed the mapping in standardjbosscmp-jdbc.xml to BOOLEAN but that 
> changed nothing. 
> I have defined a new mapping for MaxDB in standardjbosscmp-jdbc.xml:
>       <type-mapping>
>          <name>MaxDB</name>
>          <row-locking-template>SELECT ?1 FROM ?2 WHERE ?3 ORDER BY ?4 FOR 
> UPDATE</row-locking-template>
>          <pk-constraint-template>CONSTRAINT ?1 PRIMARY KEY 
> (?2)</pk-constraint-template>
>          <fk-constraint-template>ALTER TABLE ?1 ADD FOREIGN KEY ?2 (?3) 
> REFERENCES ?4 (?5)</fk-constraint-template>
>               <auto-increment-template>?1</auto-increment-template>
>          <alias-header-prefix>t</alias-header-prefix>
>          <alias-header-suffix>_</alias-header-suffix>
>          <alias-max-length>32</alias-max-length>
>          <subquery-supported>true</subquery-supported>
>          <true-mapping>1</true-mapping>
>          <false-mapping>0</false-mapping>
>          <function-mapping>
>             <function-name>count</function-name>
>             <function-sql>count(?1)</function-sql>
>          </function-mapping>
>          <mapping>
>             <java-type>java.lang.Integer</java-type>
>             <jdbc-type>INTEGER</jdbc-type>
>             <sql-type>INTEGER</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Character</java-type>
>             <jdbc-type>CHAR</jdbc-type>
>             <sql-type>CHAR</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.String</java-type>
>             <jdbc-type>VARCHAR</jdbc-type>
>             <sql-type>VARCHAR(256)</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Object</java-type>
>             <jdbc-type>JAVA_OBJECT</jdbc-type>
>             <sql-type>LONG BYTE</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Byte</java-type>
>             <jdbc-type>TINYINT</jdbc-type>
>             <sql-type>CHAR BYTE</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.sql.Timestamp</java-type>
>             <jdbc-type>TIMESTAMP</jdbc-type>
>             <sql-type>TIMESTAMP</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.util.Date</java-type>
>             <jdbc-type>TIMESTAMP</jdbc-type>
>             <sql-type>TIMESTAMP</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.sql.Time</java-type>
>             <jdbc-type>TIME</jdbc-type>
>             <sql-type>TIME</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Boolean</java-type>
>             <jdbc-type>BOOLEAN</jdbc-type>
>             <sql-type>BOOLEAN</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Float</java-type>
>             <jdbc-type>FLOAT</jdbc-type>
>             <sql-type>FLOAT</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Short</java-type>
>             <jdbc-type>SMALLINT</jdbc-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Double</java-type>
>             <jdbc-type>DOUBLE</jdbc-type>
>             <sql-type>DOUBLE PRECISION</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Long</java-type>
>             <jdbc-type>DECIMAL</jdbc-type>
>             <sql-type>DECIMAL(20)</sql-type>
>          </mapping>
>       </type-mapping>
>       <type-mapping>
>          <name>Cloudscape</name>
>          <row-locking-template/>
>          <pk-constraint-template>CONSTRAINT ?1 PRIMARY KEY 
> (?2)</pk-constraint-template>
>          <fk-constraint-template>ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY 
> (?3) REFERENCES ?4 (?5)</fk-constraint-template>
>          <alias-header-prefix>t</alias-header-prefix>
>          <alias-header-suffix>_</alias-header-suffix>
>          <alias-max-length>32</alias-max-length>
>          <subquery-supported>true</subquery-supported>
>          <true-mapping>1</true-mapping>
>          <false-mapping>0</false-mapping>
>          <function-mapping>
>             <function-name>count</function-name>
>             <function-sql>count(?1)</function-sql>
>          </function-mapping>
>          <mapping>
>             <java-type>java.math.BigDecimal</java-type>
>             <jdbc-type>LONGVARCHAR</jdbc-type>
>             <sql-type>LONG VARCHAR</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Boolean</java-type>
>             <jdbc-type>BIT</jdbc-type>
>             <sql-type>BOOLEAN</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Byte</java-type>
>             <jdbc-type>TINYINT</jdbc-type>
>             <sql-type>TINYINT</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Short</java-type>
>             <jdbc-type>SMALLINT</jdbc-type>
>             <sql-type>SMALLINT</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Integer</java-type>
>             <jdbc-type>INTEGER</jdbc-type>
>             <sql-type>INTEGER</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Long</java-type>
>             <jdbc-type>BIGINT</jdbc-type>
>             <sql-type>LONGINT</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Float</java-type>
>             <jdbc-type>REAL</jdbc-type>
>             <sql-type>REAL</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Double</java-type>
>             <jdbc-type>DOUBLE</jdbc-type>
>             <sql-type>DOUBLE PRECISION</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Character</java-type>
>             <jdbc-type>CHAR</jdbc-type>
>             <sql-type>CHAR</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.String</java-type>
>             <jdbc-type>LONGVARCHAR</jdbc-type>
>             <sql-type>LONG VARCHAR</sql-type>
>          </mapping>
>          <!-- NOTE: This alternative mapping has been suggested for cloudscape
>          <mapping>
>             <java-type>java.lang.String</java-type>
>             <jdbc-type>VARCHAR</jdbc-type>
>             <sql-type>VARCHAR(256)</sql-type>
>          </mapping> -->
>          <mapping>
>             <java-type>java.sql.Date</java-type>
>             <jdbc-type>DATE</jdbc-type>
>             <sql-type>DATE</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.sql.Time</java-type>
>             <jdbc-type>TIME</jdbc-type>
>             <sql-type>TIME</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.sql.Timestamp</java-type>
>             <jdbc-type>TIMESTAMP</jdbc-type>
>             <sql-type>TIMESTAMP</sql-type>
>          </mapping>
>          <mapping>
>             <java-type>java.lang.Object</java-type>
>             <jdbc-type>JAVA_OBJECT</jdbc-type>
>             <sql-type>LONG VARBINARY</sql-type>
>          </mapping>
>       </type-mapping>
> Here a part of the log:
> 2005-02-23 10:20:40,364 DEBUG 
> [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Type#findNonInternalByTypeClass]
>  Executing SQL: SELECT t0_o.id FROM TYPE t0_o, TY
> PE t1_o_typeClass WHERE (t1_o_typeClass.type = ? AND t1_o_typeClass.xinternal 
> = 0 AND t0_o.TYPE_CLASS_ID=t1_o_typeClass.id)
> 2005-02-23 10:20:40,382 ERROR 
> [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Type#findNonInternalByTypeClass]
>  Find failed
> com.sap.dbtech.jdbc.exceptions.DatabaseException: [-8006] (at 114): Data 
> types must be compatible
>         at 
> com.sap.dbtech.jdbc.packet.ReplyPacket.createException(ReplyPacket.java:71)
>         at 
> com.sap.dbtech.jdbc.ConnectionSapDB.throwSQLError(ConnectionSapDB.java:830)
>         at 
> com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:489)
>         at 
> com.sap.dbtech.jdbc.CallableStatementSapDB.sendCommand(CallableStatementSapDB.java:1646)
>         at com.sap.dbtech.jdbc.StatementSapDB.sendSQL(StatementSapDB.java:778)
>         at 
> com.sap.dbtech.jdbc.CallableStatementSapDB.doParse(CallableStatementSapDB.java:234)
>         at 
> com.sap.dbtech.jdbc.CallableStatementSapDB.constructor(CallableStatementSapDB.java:185)
>         at 
> com.sap.dbtech.jdbc.CallableStatementSapDB.<init>(CallableStatementSapDB.java:87)
>         at 
> com.sap.dbtech.jdbc.ConnectionSapDB.prepareStatement(ConnectionSapDB.java:722)
>         at 
> org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.prepareStatement(BaseWrapperManagedConnection.java:355)
>         at 
> org.jboss.resource.adapter.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:205)
>         at 
> org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:190)
>         at 
> org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:128)
>         at 
> org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntitiesCommand.execute(JDBCFindEntitiesCommand.java:40)
>         at 
> org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntities(JDBCStoreManager.java:598)
>         at 
> org.jboss.ejb.plugins.CMPPersistenceManager.findEntities(CMPPersistenceManager.java:322)
>         at 
> org.jboss.resource.connectionmanager.CachedConnectionInterceptor.findEntities(CachedConnectionInterceptor.java:321)
>         at org.jboss.ejb.EntityContainer.findLocal(EntityContainer.java:649)
>         at sun.reflect.GeneratedMethodAccessor83.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
>         at 
> org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1113)
>         at 
> org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:90)
>         at 
> org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:192)
>         at 
> org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:212)
>         at 
> org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:90)
>         at 
> org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:117)
>         at 
> org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61)
>         at 
> org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28)
>         at 
> org.jboss.ejb.plugins.CallValidationInterceptor.invokeHome(CallValidationInterceptor.java:41)
>         at 
> org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:109)
>         at 
> org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:313)
>         at 
> org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:126)
>         at 
> org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:99)
>         at 
> org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:121)
>         at 
> org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
>         at 
> org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:508)
>         at org.jboss.ejb.Container.invoke(Container.java:891)
>         at 
> org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyFactory.java:342)
>         at 
> org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:118)
>         at $Proxy131.findNonInternalByTypeClass(Unknown Source)
>         at 
> de.oblgmbh.wb.meta.ejb.WBMetaFacadeBean.getTypeNonInternalByTypeClass(Unknown 
> Source)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
>         at 
> org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:214)
>         at 
> org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
>         at 
> org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:113)
>         at 
> org.jboss.webservice.server.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor.java:51)
>         at 
> org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)
>         at 
> org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105)
>         at 
> org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:313)
>         at 
> org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:146)
>         at 
> org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:122)
>         at 
> org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
>         at 
> org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
>         at 
> org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
>         at org.jboss.ejb.Container.invoke(Container.java:870)
>         at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at 
> org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:144)
>         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
>         at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
>         at 
> org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
>         at 
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
>         at 
> org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:805)
>         at 
> org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:406)
>         at sun.reflect.GeneratedMethodAccessor81.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>         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:595)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.jboss.com/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
JBoss-Development mailing list
JBoss-Development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to