-
1. Re: Problem with byte arrays and characters in CMP
lepekhine Jan 31, 2002 9:35 AM (in response to janist)Could you explain what do you mean under "CMP does not work"? I don't know about SAP database - is CHAR(1) there a Unicode character? As you know characters in Java are Unicode (two-byte) characters.
-
2. Re: Problem with byte arrays and characters in CMP
janist Feb 1, 2002 7:42 AM (in response to janist)You was right. In SAP CHAR is not unicode character. With CHAR(2) it works fine.
Regarding byte[] I found, that SAP DB driver returns an input stream as a result of getObject() call on result set.
table is (id integer, image long byte, status char(2))
entity EJB fields are: Integer id, byte[] image, char status
Here is the stack trace
[14:31:07,126,JAWSPersistenceManager] com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB: Cannot convert SQL VARCHAR to Java byte []
[14:31:07,136,products] TRANSACTION ROLLBACK EXCEPTION:
javax.transaction.TransactionRolledbackException: Load failed; nested exception is:
com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB: Cannot convert SQL VARCHAR to Java byte []; nested exception is:
java.rmi.ServerException: Load failed; nested exception is:
com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB: Cannot convert SQL VARCHAR to Java byte []
java.rmi.ServerException: Load failed; nested exception is:
com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB: Cannot convert SQL VARCHAR to Java byte []
com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB: Cannot convert SQL VARCHAR to Java byte []
at com.sap.dbtech.jdbc.translators.DBTechTranslator.newGetException(DBTechTranslator.java:1084)
at com.sap.dbtech.jdbc.translators.DBTechTranslator.getBytes(DBTechTranslator.java:161)
at com.sap.dbtech.jdbc.ResultSetSapDB.getBytes(ResultSetSapDB.java:846)
at org.jboss.pool.jdbc.ResultSetInPool.getBytes(Unknown Source)
at org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.getResultObject(JDBCCommand.java:435)
at org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.getResultObject(JDBCCommand.java:500)
at org.jboss.ejb.plugins.jaws.jdbc.JDBCLoadEntityCommand.loadOneEntity(JDBCLoadEntityCommand.java:219)
at org.jboss.ejb.plugins.jaws.jdbc.JDBCLoadEntityCommand.handleResult(JDBCLoadEntityCommand.java:176)
at org.jboss.ejb.plugins.jaws.jdbc.JDBCQueryCommand.executeStatementAndHandleResult(JDBCQueryCommand.java:59)
at org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.jdbcExecute(JDBCCommand.java:156)
at org.jboss.ejb.plugins.jaws.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:147)
at org.jboss.ejb.plugins.jaws.JAWSPersistenceManager.loadEntity(JAWSPersistenceManager.java:156)
at org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:362)
at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:287)
at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:197)
at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:125)
at org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:138)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:347)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:100)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:127)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:170)
at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:428)
at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:410)
at java.lang.reflect.Method.invoke(Native Method)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)