Hi,I faced a small problem:
Refer to the Tutorial,I created two tables and JavaBeans.
class Account :
protected Integer userID;
protected String userName;
protected String userPassword;
protected Vector userBills = null;
...
class Bill :
protected Integer flowNo;
protected Integer userID;
protected String telephoneNumber;
protected Integer lastTime;
protected Double fee;
protected InterfaceAccount account;
...
Repository.xml:
<class-descriptor
class="webserverdemo.Account"
table="account"
>
......
<collection-descriptor
name="userBills"
element-class-ref="webserverdemo.Bill"
collection-class="java.util.Vector"
auto-retrieve="true"
auto-update="true"
auto-delete="true"
>
<inverse-foreignkey field-ref="userID"/>
</collection-descriptor>
<class-descriptor
class="webserverdemo.Bill"
table="bill"
>
......
<reference-descriptor
name="account"
class-ref="webserverdemo.Account"
>
<foreignkey field-ref="userID"/>
</reference-descriptor>
TestClient.java
...
Bill a = new Bill(new Integer(1),new Integer(1),"1234567",new
Integer(100),new Double(1.20));
Bill b = new Bill(new Integer(2),new Integer(1),"123456789",new
Integer(200),new Double(1.30));
Account account = new Account(new Integer(1),"bxc","k4hvd");
account.addBill(a);
account.addBill(b);
The Result is :In my DB(MySQL),in table Bill,column "userID" is NULL.
and if execute the following code even if I update table bill and set
column "userID"
the correct value,JBOSS3 will throws th exception:
Account queryAccount = new Account();
queryAccount.setUserID(new Integer(1));
Query query = new QueryByCriteria(queryAccount);
account = (Account)broker.getObjectByQuery(query);
Exception:
14:07:14,471 ERROR [STDERR] java.lang.ClassCastException: java.util.Vector
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollection(U
nknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollections(
Unknown Source)
at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(U
nknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unk
nown Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQue
ry(Unknown Source)
at
webserverdemo.WebServerDemoBean.reportQuery(WebServerDemoBean.java:16
9)
at java.lang.reflect.Method.invoke(Native Method)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(S
tatelessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Stat
elessSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
rceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
torCMT.java:237)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:9
8)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai
ner.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:
383)
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:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
rethrown as org.apache.ojb.broker.PersistenceBrokerException:
java.util.Vector
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollection(U
nknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollections(
Unknown Source)
at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(U
nknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unk
nown Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQue
ry(Unknown Source)
at
webserverdemo.WebServerDemoBean.reportQuery(WebServerDemoBean.java:16
9)
at java.lang.reflect.Method.invoke(Native Method)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(S
tatelessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Stat
elessSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
rceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
torCMT.java:237)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:9
8)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai
ner.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:
383)
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:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
14:07:14,902 INFO [STDOUT] [org.apache.ojb.broker.accesslayer.RsIterator]
ERROR
:
14:07:14,912 INFO [STDOUT] java.util.Vector
14:07:14,922 ERROR [STDERR] java.lang.ClassCastException: java.util.Vector
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollection(U
nknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollections(
Unknown Source)
at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(U
nknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unk
nown Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQue
ry(Unknown Source)
at
webserverdemo.WebServerDemoBean.reportQuery(WebServerDemoBean.java:16
9)
at java.lang.reflect.Method.invoke(Native Method)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(S
tatelessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Stat
elessSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
rceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
torCMT.java:237)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:9
8)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai
ner.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:
383)
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:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
rethrown as org.apache.ojb.broker.PersistenceBrokerException:
java.util.Vector
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollection(U
nknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveCollections(
Unknown Source)
at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(U
nknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unk
nown Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQue
ry(Unknown Source)
at
webserverdemo.WebServerDemoBean.reportQuery(WebServerDemoBean.java:16
9)
at java.lang.reflect.Method.invoke(Native Method)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(S
tatelessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Stat
elessSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
rceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
torCMT.java:237)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:9
8)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai
ner.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:
383)
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:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
14:07:15,413 ERROR [LogInterceptor] RuntimeException:
java.util.NoSuchElementException: Could not obtain next object:
java.util.Vector
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unk
nown Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQue
ry(Unknown Source)
at
webserverdemo.WebServerDemoBean.reportQuery(WebServerDemoBean.java:16
9)
at java.lang.reflect.Method.invoke(Native Method)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(S
tatelessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Stat
elessSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
rceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
torCMT.java:237)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:9
8)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai
ner.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:
383)
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:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
rethrown as
org.apache.ojb.broker.PersistenceBrokerException: Could not obtain next
object:
java.util.Vector
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery
(Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unk
nown Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQue
ry(Unknown Source)
at
webserverdemo.WebServerDemoBean.reportQuery(WebServerDemoBean.java:16
9)
at java.lang.reflect.Method.invoke(Native Method)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(S
tatelessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Stat
elessSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
rceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
torCMT.java:237)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:9
8)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai
ner.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:
383)
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:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
Thank you !!!!!!