As Poxies work with interfaces only you have to make sure that all your reference attributes are typed as Interfaces too!
A field
B aB;
can only be assigned with a B instance, but not with a Proxy implementing InterfaceB. This is what the error message is trying to tell you.
You must define aB as InterfaceB aB;
cheers, thomas
Emmanuel Dupont wrote:
All,
As the maillist is out of order, I would like to know if there are some trouble with the dynamic proxy ?
I have two objects A, B who work fine with Ojb and since I have been puting the "dynamic" proxy in the repository.xml it haven't been working.
I only do this :
Object A implement InterfaceA
Object B implement InterfaceB
proxy="dynamic" in the repository.xml
Declaration of the InterfaceA and InterfaceB with all the method signatures of A and B.
That's all.. This is driving me nuts !!
I have some collections between A, B and C, D..
It fails at the attributes b from A with is a link to B.
[org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl]
ERROR: while set field:
object class[ A target field: aB
target field type: class B
object value class: $Proxy1
object value: [Id] 15]
[org.apache.ojb.broker.accesslayer.IndirectionHandler] ERROR: Method invoking failed for method *toString* on object null
Error setting field:aB in object:A
java.lang.IllegalArgumentException
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl. java:63)
at java.lang.reflect.Field.set(Field.java:519)
at org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe rsistentFieldDefaultImpl.java:147)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi stenceBrokerImpl.java:1035)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers istenceBrokerImpl.java:1013)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persistence BrokerImpl.java:1527)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Per sistenceBrokerImpl.java:1632)
at org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdenti ty(DelegatingPersistenceBroker.java:284)
at org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi rectionHandler.java:290)
at org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Indirect ionHandler.java:277)
at org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl er.java:246)
at $Proxy0.toString(Unknown Source)
at com.jware.test.businessobjects.AlertBO.getAlertInformation(BO.java:69)
at com.jware.test.businessobjects.Application.run(Application.java:28)
at com.jware.test.businessobjects.Application.main(Application.java:12)
rethrown as org.apache.ojb.broker.metadata.MetadataException: Error setting field:aB in object:A
at org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe rsistentFieldDefaultImpl.java:165)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi stenceBrokerImpl.java:1035)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers istenceBrokerImpl.java:1013)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persistence BrokerImpl.java:1527)
at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Per sistenceBrokerImpl.java:1632)
at org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdenti ty(DelegatingPersistenceBroker.java:284)
at org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi rectionHandler.java:290)
at org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Indirect ionHandler.java:277)
at org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl er.java:246)
at $Proxy0.toString(Unknown Source)
at BO.getInformation(BO.java:69)
at com.jware.test.businessobjects.Application.run(Application.java:28)
at com.jware.test.businessobjects.Application.main(Application.java:12)
Caused by: java.lang.IllegalArgumentException
Thanks a lot !
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
