Bugs item #562004, was opened at 2002-05-29 13:11
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=376685&aid=562004&group_id=22866
Category: JBossCMP
Group: CVS HEAD
Status: Open
Resolution: None
Priority: 5
Submitted By: Justin Casp (jcasp)
Assigned to: Nobody/Anonymous (nobody)
>Summary: 'Error setting column value' using dependent value classes w
Initial Comment:
I posted this problem a few weeks ago on jboss.org forums, but it's down
right
now so I can't reference that post. I figured out how to create a simple test
case that reliably reproduces the problem.
The error message 'Error setting column value' occurs when I have an
existing CMP bean that reads existing records from a datasource. The bean
uses a dependent value class, although I'm not sure if this problem is
specific to dependent value classes or just any cmp bean with fields
mapped
to columns.
If I create the record externally (e.g., using psql, the postgres command line
tool) and only set a few of the columns to non-null values, when I attempt to
load that bean instance with a finder, jboss throws the following exception
on
the server:
12:03:56,650 ERROR [STDERR] java.lang.NullPointerException
12:03:56,652 ERROR [STDERR] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12:03:56,652 ERROR [STDERR] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
12:03:56,653 ERROR [STDERR] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
12:03:56,653 ERROR [STDERR] at
java.lang.reflect.Method.invoke(Method.java:324)
12:03:56,653 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.JDBCTypeComplexProperty.setColumnValue(JDBCTypeComplexProperty.java:142)
12:03:56,654 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.JDBCTypeComplex.setColumnValue(JDBCTypeComplex.java:158)
12:03:56,654 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.JDBCTypeComplex.setColumnValue(JDBCTypeComplex.java:133)
12:03:56,654 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadArgumentResults(JDBCAbstractCMPFieldBridge.java:352)
12:03:56,655 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadInstanceResults(JDBCAbstractCMPFieldBridge.java:304)
12:03:56,655 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:140)
12:03:56,655 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:62)
12:03:56,655 ERROR [STDERR] at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:496)
12:03:56,656 ERROR [STDERR] at
org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:410)
12:03:56,656 ERROR [STDERR] at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:314)
12:03:56,656 ERROR [STDERR] at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:310)
12:03:56,657 ERROR [STDERR] at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:147)
12:03:56,657 ERROR [STDERR] at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:193)
12:03:56,657 ERROR [STDERR] at
org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
12:03:56,658 ERROR [STDERR] at
org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
12:03:56,658 ERROR [STDERR] at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:96)
12:03:56,658 ERROR [STDERR] at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:167)
12:03:56,659 ERROR [STDERR] at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:61)
12:03:56,659 ERROR [STDERR] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:129)
12:03:56,659 ERROR [STDERR] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:166)
12:03:56,659 ERROR [STDERR] at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:145)
12:03:56,660 ERROR [STDERR] at
org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:482)
12:03:56,660 ERROR [STDERR] at
org.jboss.ejb.Container.invoke(Container.java:694)
12:03:56,660 ERROR [STDERR] at
org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1024)
12:03:56,661 ERROR [STDERR] at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
12:03:56,661 ERROR [STDERR] at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:321)
12:03:56,661 ERROR [STDERR] at
sun.reflect.GeneratedMethodAccessor186.invoke(Unknown Source)
12:03:56,699 ERROR [STDERR] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
12:03:56,700 ERROR [STDERR] at
java.lang.reflect.Method.invoke(Method.java:324)
12:03:56,700 ERROR [STDERR]
================================================
and this stack trace on the client:
Beginning Example:
result size: 1
java.lang.reflect.UndeclaredThrowableException
at $Proxy1.getOrderID(Unknown Source)
at
examples.local_objects.ClientDemoDependentObject.main(Unknown Source)
Caused by: java.rmi.ServerException: RemoteException occurred in server
thread; nested exception is:
java.rmi.ServerException: Error setting column value
Embedded Exception
null; nested exception is:
javax.ejb.EJBException: Error setting column value
Embedded Exception
null
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:292)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
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:536)
at
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
at
sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133)
at
org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)
at
org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:127)
at
org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:92)
at
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:51)
at
org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:48)
at
org.jboss.proxy.ejb.EntityInterceptor.invoke(EntityInterceptor.java:115)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:83)
... 2 more
Caused by: java.rmi.ServerException: Error setting column value
Embedded Exception
null; nested exception is:
javax.ejb.EJBException: Error setting column value
Embedded Exception
null
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:119)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:167)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:61)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:129)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:166)
at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:145)
at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:482)
at org.jboss.ejb.Container.invoke(Container.java:694)
at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1024)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:321)
at sun.reflect.GeneratedMethodAccessor186.invoke(Unknown
Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
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:536)
Caused by: javax.ejb.EJBException: Error setting column value
Embedded Exception
null
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCTypeComplex.setColumnValue(JDBCTypeComplex.java:161)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCTypeComplex.setColumnValue(JDBCTypeComplex.java:133)
at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadArgumentResults(JDBCAbstractCMPFieldBridge.java:352)
at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadInstanceResults(JDBCAbstractCMPFieldBridge.java:304)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:140)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:62)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:496)
at
org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:410)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:314)
at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:310)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:147)
at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:193)
at
org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
at
org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:96)
... 20 more
=====================================
instructions to reproduce this error:
1) deploy the attached ear (dvc-bug.ear, uses java:/PostgresDS as the
datasource)
2) execute the following sql commands with psql or a similar tool:
insert into orders (order_id) values ('100');
( 'ant run-client' at this point to confirm the app is working if you want)
update orders set address_state='FL' where order_id='100';
3) run the client using the ant script provided ('ant run-client')
let me know what I can do to help resolve this bug, as it is stopping my
project right now.
----------------------------------------------------------------------
>Comment By: Dan Christopherson (danch)
Date: 2002-06-03 10:54
Message:
Logged In: YES
user_id=51915
No, I don't think this can/should be fixed - if a nullable
column were mapped to a primitive field, how could the
application tell the difference between null and a
legitimate value? Sure you can use flag values, but these
have to be application dependent. From the standpoint of
relational theory it's just a bad idea.
----------------------------------------------------------------------
Comment By: Justin Casp (jcasp)
Date: 2002-06-02 21:12
Message:
Logged In: YES
user_id=555248
Changing from int to Integer worked... Great thought!
I guess it's still a bug though, as JBoss ought to handle this case (which seems
fairly common?) a little better. Perhaps it can just be low priority. I was going to
attempt to fix it myself, but now that there is a workaround, I can use this bug as a
starting point for learning the JBoss codebase as time permits.
----------------------------------------------------------------------
Comment By: Harald Gliebe (hagl)
Date: 2002-06-02 12:02
Message:
Logged In: YES
user_id=31131
The exception probably occurs when you try to load a
database NULL value into a primitive field ( the zip attribute of
AddressDVC in your example).
Could you try to change the type of zip from int to Integer and
see if the Exception still occurs.
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=376685&aid=562004&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
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development