Hi,

(Please note that this problem could easily be
avoided by using other types. But maybe a small
change in the CMP engine and/or the Firebird driver
would be better.)

I'm using JBoss from CVS about a week old, and
firebird-jca-jdbc-driver 1.0-beta-1.

In my db, I have a column, defined as
  SEX CHAR
and I have CMP2.0 accessors for it in my bean
  Character getSex();
  void setSex(Character sex);

My problems start when I create an instance of my bean
This provokes an exception in the Firebird driver:
 org.firebirdsql.jdbc.TypeConvertionException: Error converting to object.
        at org.firebirdsql.jdbc.FBField.setObject(FBField.java:601)
        at 
org.firebirdsql.jdbc.FBPreparedStatement.setObject(FBPreparedStatement.java:212)
        at 
org.firebirdsql.jdbc.FBPreparedStatement.setObject(FBPreparedStatement.java:382)
        at org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil.setParameter(JDBCUtil.java:249)
        at 
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.setArgumentParameters(JDBCAbstractCMPFieldBridge.java:283)
        at 
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.setInstanceParameters(JDBCAbstractCMPFieldBridge.java:262)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.insertEntity(JDBCCreateEntityCommand.java:192)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.execute(JDBCCreateEntityCommand.java:131)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:527)
        at 
org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:253)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntity(CachedConnectionInterceptor.java:270)
(Line numbers may be slightly offset by extra debug code I inserted.)

At JDBCUtil.java:249, there is a call
  pm.setObject(index, value, jdbcType);
When this exception occurs, I can se that value is
of class java.lang.Character with the value 'M', and
that jdbcType is CHAR.

I'm not an JDBC expert, but it looks to me like throwing
an exception in this case may actually not be a JDBC
violation (JDBC has no standard mapping from Character
to CHAR).

However, it seems logical to call the driver this way, so
a change to the FBField class in the Firebird driver to
allow this would be nice, and also simple to do.

And _if_ the Firebird driver already is JDBC-conformant
on this issue, we should probably change the CMP2.0
engine so that such a call is not done. That shouldn't
be hard to do either, in the JDBCUtil.setParameter()
method.

But before I do any of the above changes, I would like
to hear your comments.


Best Regards,

Ole Husgaard


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Oh, it's good to be a geek.
http://thinkgeek.com/sf
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to