Everything is there in the original email. Scroll below the stack trace
or search for '**** PERSISTENT CLASS UNIT'. You may want to try it with
many different loop settings because it may behave differently at
different CPU/Mem combinations.
On Sun, 2003-02-02 at 09:27, Thomas Mahler wrote:
> Hi Ken,
>
> As I was concerned that your report might reveal a severe bug
> I rewrote your testcase against classes we have already in our
> testsuite. Here is the code:
> public void testMassOperations()
> {
> for (int i = 100; i < 200; i++)
> {
> broker.beginTransaction();
> ProductGroup pg = new ProductGroup();
> pg.setId(i);
> pg.setGroupName("1-1 test productgroup " + i);
> broker.store(pg);
> broker.commitTransaction();
> }
> for (int i = 100; i < 200; i++)
> {
> broker.beginTransaction();
> Article article = Article.createInstance();
> article.setArticleId(i);
> article.setArticleName("1-1 test article " + i);
> article.setProductGroupId(i);
> broker.retrieveReference(article, "productGroup");
> broker.store(article);
> broker.commitTransaction();
> }
> }
>
> I tested it several times with 100 iterations. This test does *not* fail!
> IMO this indicates that there is no bug in the tested OJB functionality.
> I assume there is something wrong in your mapping repository.
> Please post the code of your persistent classes Payee and Unit and the
> respective class-descriptors from the repository.xml.
>
> cheers,
> Thomas
>
>
> Ken Brewer wrote:
> > This is a very strange concerning problem and I think it may be a SEVERE
> > BUG. This post is long but I've tried to include everything necessary to
> > reproduce the problem. It was very difficult to craft the test code to
> > reproduce the problem because it's very erratic.
> >
> > I'm trying to import my test data from flat text files and so I'm
> > populating foreign keys rather than the objects themselves then calling
> > PersistenceBroker.retrieveReference(?,?). I'm importing each class of
> > objects from flat text files one file at a time. The text files contain
> > the foreign keys and the objects are populated with them. In other
> > words, I'm not traversing the object graph from top to bottom while
> > importing but setting the foreign keys such that, after all data is
> > imported, OJB should have no problem materializing the object graph. The
> > database was generated by OJB using the autobuild=true property in
> > OJB.properties. I don't think this problem is related to data contraints
> > in any way. These are all simple 1:1 associations.
> >
> > I've pasted in all the code etc below necessary to reproduce the
> > problem.
> >
> > Thanks for your help in advance,
> >
> > -Ken
> >
> > ****THE TEST CODE TO REPRODUCE THE PROBLEM
> > ****IMPORTANT NOTE****
> > THE LOOP COUNTERS ARE AT 44. ALL DATA IS IMPORTED SUCCESSFULLY IF
> > COUNTERS ARE <41. BETWEEN 41 AND 51 It FAILS SOMETIMES. >51 IT ALWAYS
> > FAILS. IF THE LOOP IS MADE INTO ONE LOOP INSTEAD OF TWO, BY COMMENTING
> > THE TWO LINES BELOW STARTING WITH ****, THEN IT ALWAYS WORKS, EVEN AT
> > 100 LOOPS! WHEN IT FAILS, IT FAILS AT THE LINE MARKED ****FAILS.
> >
> > public void test() {
> > try {
> > for (int i = 1; i < 44; i++) {
> > db.beginTransaction();
> > Payee payee = new Payee();
> > payee.setPK(new Long(i));
> > payee.setName("test payee " + i);
> > System.out.println(payee.toString());
> > db.store(payee);
> > db.commitTransaction();
> > **** }
> > **** for (int i = 1; i < 44; i++) {
> > db.beginTransaction();
> > Unit unit = new Unit();
> > unit.setPK(new Long(i));
> > unit.setDescr("test unit " + i);
> > unit.setOwnerFK(new Long(i));
> > System.out.println(unit.toString());
> > ****FAILS db.retrieveReference(unit, "owner");
> > db.store(unit);
> > db.commitTransaction();
> > }
> >
> > } catch (Exception e1) {
> > e1.printStackTrace();
> > }
> > }
> >
> > ****THE STACK TRACE
> >
> > [org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl] INFO:
> > Create PersistenceBroker instance pool, pool configuration was
> > {whenExhaustedAction=0, maxIdle=-1, maxActive=100, maxWait=2000,
> > numTestsPerEvictionRun=10, testWhileIdle=false, testOnReturn=false,
> > timeBetweenEvictionRunsMillis=-1, minEvictableIdleIimeMillis=600000,
> > testOnBorrow=false}
> > [DEFAULT] INFO: OJB Descriptor Repository:
> > file:/opt/projects/pm/classes/repository.xml
> > [DEFAULT] INFO: ...Finished parsing. Took 1606 msecs
> > [DEFAULT] INFO: OJB Descriptor Repository:
> > file:/opt/projects/pm/classes/repository.xml
> > [DEFAULT] INFO: ...Finished parsing. Took 191 msecs
> > [DEFAULT] INFO: OJB Descriptor Repository:
> > file:/opt/projects/pm/classes/repository.xml
> > [DEFAULT] INFO: ...Finished parsing. Took 238 msecs
> > [org.apache.ojb.broker.util.sequence.SequenceManagerFactory] INFO: Use
> > sequence manager class: class
> > org.apache.ojb.broker.util.sequence.SequenceManagerHiLoImpl
> > [org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO:
> > Create connection pool for JdbcDescriptorKey 1917968236
> > [org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO:
> > Create new connection pool for
> > org.apache.ojb.broker.metadata.JdbcConnectionDescriptor,
> > used descriptor: JdbcConnectionDescriptor
> > DBMS:Hsqldb
> > DRIVER: org.hsqldb.jdbcDriver
> > PROTOCOL: jdbc
> > SUBPROTOCOL: hsqldb
> > DBALIAS: hsql://localhost
> > USERNAME: sa
> > PASSWORD:
> > EAGER RELEASE: false
> > pool configuration was: {whenExhaustedAction=0, maxIdle=-1,
> > maxActive=21, maxWait=5000, numTestsPerEvictionRun=10,
> > testWhileIdle=false, testOnReturn=false,
> > timeBetweenEvictionRunsMillis=-1, minEvictableIdleIimeMillis=600000,
> > testOnBorrow=true}
> > [Payee: PK = 1, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 1]
> > [Payee: PK = 2, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 2]
> > [Payee: PK = 3, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 3]
> > [Payee: PK = 4, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 4]
> > [Payee: PK = 5, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 5]
> > [Payee: PK = 6, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 6]
> > [Payee: PK = 7, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 7]
> > [Payee: PK = 8, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 8]
> > [Payee: PK = 9, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 9]
> > [Payee: PK = 10, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 10]
> > [Payee: PK = 11, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 11]
> > [Payee: PK = 12, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 12]
> > [Payee: PK = 13, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 13]
> > [Payee: PK = 14, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 14]
> > [Payee: PK = 15, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 15]
> > [Payee: PK = 16, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 16]
> > [Payee: PK = 17, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 17]
> > [Payee: PK = 18, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 18]
> > [Payee: PK = 19, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 19]
> > [Payee: PK = 20, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 20]
> > [Payee: PK = 21, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 21]
> > [Payee: PK = 22, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 22]
> > [Payee: PK = 23, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 23]
> > [Payee: PK = 24, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 24]
> > [Payee: PK = 25, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 25]
> > [Payee: PK = 26, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 26]
> > [Payee: PK = 27, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 27]
> > [Payee: PK = 28, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 28]
> > [Payee: PK = 29, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 29]
> > [Payee: PK = 30, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 30]
> > [Payee: PK = 31, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 31]
> > [Payee: PK = 32, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 32]
> > [Payee: PK = 33, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 33]
> > [Payee: PK = 34, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 34]
> > [Payee: PK = 35, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 35]
> > [Payee: PK = 36, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 36]
> > [Payee: PK = 37, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 37]
> > [Payee: PK = 38, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 38]
> > [Payee: PK = 39, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 39]
> > [Payee: PK = 40, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 40]
> > [Payee: PK = 41, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 41]
> > [Payee: PK = 42, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 42]
> > [Payee: PK = 43, address = null, addressFK = null, isOwner = null,
> > isTenant = null, isVendor = null, name = test payee 43]
> > [Unit: PK = 1, address = null, addressFK = null, descr = test unit 1,
> > isCommercial = null, owner = null, ownerFK = 1]
> > [Unit: PK = 2, address = null, addressFK = null, descr = test unit 2,
> > isCommercial = null, owner = null, ownerFK = 2]
> > [Unit: PK = 3, address = null, addressFK = null, descr = test unit 3,
> > isCommercial = null, owner = null, ownerFK = 3]
> > [Unit: PK = 4, address = null, addressFK = null, descr = test unit 4,
> > isCommercial = null, owner = null, ownerFK = 4]
> > [Unit: PK = 5, address = null, addressFK = null, descr = test unit 5,
> > isCommercial = null, owner = null, ownerFK = 5]
> > [Unit: PK = 6, address = null, addressFK = null, descr = test unit 6,
> > isCommercial = null, owner = null, ownerFK = 6]
> > [Unit: PK = 7, address = null, addressFK = null, descr = test unit 7,
> > isCommercial = null, owner = null, ownerFK = 7]
> > [Unit: PK = 8, address = null, addressFK = null, descr = test unit 8,
> > isCommercial = null, owner = null, ownerFK = 8]
> > [Unit: PK = 9, address = null, addressFK = null, descr = test unit 9,
> > isCommercial = null, owner = null, ownerFK = 9]
> > [org.apache.ojb.broker.accesslayer.JdbcAccess] ERROR:
> > PersistenceBrokerException during the execution of materializeObject:
> > Unable to build object instance (MAYBE you don't have a constructor
> > available):class com.microremedies.pm.persist.ojb.Payee: Error setting
> > field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > Unable to build object instance (MAYBE you don't have a constructor
> > available):class com.microremedies.pm.persist.ojb.Payee: Error setting
> > field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > 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(PersistentFieldDefaultImpl.java:146)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:228)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowReaderDefaultImpl.java:108)
> > at
> > org.apache.ojb.broker.accesslayer.JdbcAccess.materializeObject(JdbcAccess.java:444)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1424)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1767)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject(PersistenceBrokerImpl.java:1195)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:999)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:955)
> > at
> >
>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.retrieveReference(DelegatingPersistenceBroker.java:179)
> > at
> > com.microremedies.pm.persist.ojb.Migration.test(Migration.java:59)
> > at
> > com.microremedies.pm.persist.ojb.Migration.doit(Migration.java:34)
> > at
> > com.microremedies.pm.persist.ojb.Migration.main(Migration.java:24)
> > rethrown as org.apache.ojb.broker.metadata.MetadataException: Error
> > setting field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > at
> >
>org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(PersistentFieldDefaultImpl.java:162)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:228)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowReaderDefaultImpl.java:108)
> > at
> > org.apache.ojb.broker.accesslayer.JdbcAccess.materializeObject(JdbcAccess.java:444)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1424)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1767)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject(PersistenceBrokerImpl.java:1195)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:999)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:955)
> > at
> >
>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.retrieveReference(DelegatingPersistenceBroker.java:179)
> > at
> > com.microremedies.pm.persist.ojb.Migration.test(Migration.java:59)
> > at
> > com.microremedies.pm.persist.ojb.Migration.doit(Migration.java:34)
> > at
> > com.microremedies.pm.persist.ojb.Migration.main(Migration.java:24)
> > Caused by: 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(PersistentFieldDefaultImpl.java:146)
> > ... 12 more
> > rethrown as org.apache.ojb.broker.PersistenceBrokerException: Unable to
> > build object instance (MAYBE you don't have a constructor
> > available):class com.microremedies.pm.persist.ojb.Payee: Error setting
> > field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:234)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowReaderDefaultImpl.java:108)
> > at
> > org.apache.ojb.broker.accesslayer.JdbcAccess.materializeObject(JdbcAccess.java:444)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1424)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1767)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject(PersistenceBrokerImpl.java:1195)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:999)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:955)
> > at
> >
>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.retrieveReference(DelegatingPersistenceBroker.java:179)
> > at
> > com.microremedies.pm.persist.ojb.Migration.test(Migration.java:59)
> > at
> > com.microremedies.pm.persist.ojb.Migration.doit(Migration.java:34)
> > at
> > com.microremedies.pm.persist.ojb.Migration.main(Migration.java:24)
> > Caused by: org.apache.ojb.broker.metadata.MetadataException: Error
> > setting field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > at
> >
>org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(PersistentFieldDefaultImpl.java:162)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:228)
> > ... 11 more
> > Caused by: 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(PersistentFieldDefaultImpl.java:146)
> > ... 12 more
> > [org.apache.ojb.broker.accesslayer.ConnectionManager] INFO: Rollback was
> > called, do rollback on current connection
> > org.hsqldb.jdbcConnection@1a99561
> > 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(PersistentFieldDefaultImpl.java:146)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:228)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowReaderDefaultImpl.java:108)
> > at
> > org.apache.ojb.broker.accesslayer.JdbcAccess.materializeObject(JdbcAccess.java:444)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1424)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1767)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject(PersistenceBrokerImpl.java:1195)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:999)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:955)
> > at
> >
>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.retrieveReference(DelegatingPersistenceBroker.java:179)
> > at
> > com.microremedies.pm.persist.ojb.Migration.test(Migration.java:59)
> > at
> > com.microremedies.pm.persist.ojb.Migration.doit(Migration.java:34)
> > at
> > com.microremedies.pm.persist.ojb.Migration.main(Migration.java:24)
> > rethrown as org.apache.ojb.broker.metadata.MetadataException: Error
> > setting field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > at
> >
>org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(PersistentFieldDefaultImpl.java:162)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:228)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowReaderDefaultImpl.java:108)
> > at
> > org.apache.ojb.broker.accesslayer.JdbcAccess.materializeObject(JdbcAccess.java:444)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1424)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1767)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject(PersistenceBrokerImpl.java:1195)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:999)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:955)
> > at
> >
>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.retrieveReference(DelegatingPersistenceBroker.java:179)
> > at
> > com.microremedies.pm.persist.ojb.Migration.test(Migration.java:59)
> > at
> > com.microremedies.pm.persist.ojb.Migration.doit(Migration.java:34)
> > at
> > com.microremedies.pm.persist.ojb.Migration.main(Migration.java:24)
> > Caused by: 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(PersistentFieldDefaultImpl.java:146)
> > ... 12 more
> > rethrown as org.apache.ojb.broker.PersistenceBrokerException: Unable to
> > build object instance (MAYBE you don't have a constructor
> > available):class com.microremedies.pm.persist.ojb.Payee: Error setting
> > field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:234)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowReaderDefaultImpl.java:108)
> > at
> > org.apache.ojb.broker.accesslayer.JdbcAccess.materializeObject(JdbcAccess.java:444)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1424)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1767)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject(PersistenceBrokerImpl.java:1195)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:999)
> > at
> >
>org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:955)
> > at
> >
>org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.retrieveReference(DelegatingPersistenceBroker.java:179)
> > at
> > com.microremedies.pm.persist.ojb.Migration.test(Migration.java:59)
> > at
> > com.microremedies.pm.persist.ojb.Migration.doit(Migration.java:34)
> > at
> > com.microremedies.pm.persist.ojb.Migration.main(Migration.java:24)
> > Caused by: org.apache.ojb.broker.metadata.MetadataException: Error
> > setting field:PK in object:com.microremedies.pm.persist.ojb.Payee
> > at
> >
>org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(PersistentFieldDefaultImpl.java:162)
> > at
> >
>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(RowReaderDefaultImpl.java:228)
> > ... 11 more
> > Caused by: 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(PersistentFieldDefaultImpl.java:146)
> > ... 12 more
> >
> >
> > ****PERSISTENT CLASS UNIT
> >
> > package com.microremedies.pm.persist.ojb;
> > import java.beans.*;
> > import com.microremedies.pm.persist.inf.*;
> > public class Unit extends EntityBase {
> > private Payee owner;
> > private Long ownerFK;
> > private Long addressFK;
> > private Address address;
> > private Boolean isCommercial;
> > private String descr;
> > private Long PK;
> >
> > public void setPK(Long PK) {
> > this.PK = PK;
> > }
> > public Long getPK() {
> > return PK;
> > }
> > public Payee getOwner() {
> > return this.owner;
> > }
> > public void setOwner(Payee owner) {
> > this.owner = owner;
> > }
> > public void setOwnerFK(Long ownerFK) {
> > this.ownerFK = ownerFK;
> > }
> > public Long getOwnerFK() {
> > return ownerFK;
> > }
> > public void setAddressFK(Long addressFK) {
> > this.addressFK = addressFK;
> > }
> > public Long getAddressFK() {
> > return addressFK;
> > }
> > public Address getAddress() {
> > return this.address;
> > }
> > public void setAddress(Address address) {
> > this.address = address;
> > }
> > public Boolean getIsCommercial() {
> > return this.isCommercial;
> > }
> > public void setIsCommercial(Boolean isCommercial) {
> > this.isCommercial = isCommercial;
> > }
> > public String getDescr() {
> > return this.descr;
> > }
> > public void setDescr(String descr) {
> > this.descr = descr;
> > }
> >
> > }
> >
> > ****PERSISTENT CLASS PAYEE
> >
> > package com.microremedies.pm.persist.ojb;
> > import com.microremedies.pm.persist.inf.*;
> > public class Payee extends EntityBase {
> > private Long PK;
> > private Address address;
> > private Long addressFK;
> > private Boolean isOwner;
> > private Boolean isTenant;
> > private Boolean isVendor;
> > private String name;
> >
> > public Payee() {
> > }
> > public Boolean getIsOwner() {
> > return this.isOwner;
> > }
> > public void setIsOwner(Boolean param) {
> > this.isOwner = param;
> > }
> > public Boolean getIsTenant() {
> > return this.isTenant;
> > }
> > public void setIsTenant(Boolean param) {
> > this.isTenant = param;
> > }
> > public Boolean getIsVendor() {
> > return this.isVendor;
> > }
> > public void setIsVendor(Boolean param) {
> > this.isVendor = param;
> > }
> > public String getName() {
> > return this.name;
> > }
> > public void setName(String param) {
> > this.name = param;
> > }
> > public Long getPK() {
> > return this.PK;
> > }
> > public void setPK(Long param) {
> > this.PK = param;
> > }
> > public void setAddress(Address address) {
> > this.address = address;
> > }
> > public Address getAddress() {
> > return this.address;
> > }
> > public void setAddressFK(Long addressFK) {
> > this.addressFK = addressFK;
> > }
> > public Long getAddressFK() {
> > return this.addressFK;
> > }
> > }
> >
> > ****A SIMPLE SUPERCLASS PROVING ONLY A TOSTRING METHOD
> >
> > package com.microremedies.pm.persist.inf;
> > import java.beans.*;
> > public class EntityBase {
> > public String toString() {
> > StringBuffer buf = new StringBuffer();
> > try {
> > BeanInfo bi =
> > Introspector.getBeanInfo(this.getClass(),EntityBase.class);
> > PropertyDescriptor[] props = bi.getPropertyDescriptors();
> > String name = this.getClass().getName();
> > name = name.substring(name.lastIndexOf(".") + 1);
> > buf.append("[" + name + ": ");
> > for (int i = 0; i < props.length; i++) {
> > PropertyDescriptor prop = props[i];
> > buf.append(prop.getName() + " = " +
> > prop.getReadMethod().invoke(this,null));
> > if (i != (props.length - 1))
> > buf.append(", ");
> > }
> > buf.append("]");
> > } catch (Exception ex) {
> > ex.printStackTrace();
> > }
> > return buf.toString();
> > }
> >
> > }
> >
> > ****CLASS DESCRIPTORS FOR EACH
> >
> > <class-descriptor class="com.microremedies.pm.persist.ojb.Payee"
> > table="PAYEE">
> > <field-descriptor id="1" name="PK" column="PK" jdbc-type="INTEGER"
> > primarykey="true" autoincrement="true"/>
> > <field-descriptor id="2" name="addressFK" column="ADDRESS_FK"
> > jdbc-type="INTEGER"/>
> > <field-descriptor id="3" name="name" column="NAME" jdbc-type="VARCHAR"/>
> > <field-descriptor id="4" name="isOwner" column="ISOWNER"
> > jdbc-type="BIT"/>
> > <field-descriptor id="5" name="isTenant" column="ISTENANT"
> > jdbc-type="BIT"/>
> > <field-descriptor id="6" name="isVendor" column="ISVENDOR"
> > jdbc-type="BIT"/>
> > <reference-descriptor name="address"
> > class-ref="com.microremedies.pm.persist.ojb.Address"
> > auto-retrieve="true" auto-update="false" auto-delete="false">
> > <foreignkey field-id-ref="2"/>
> > </reference-descriptor>
> > </class-descriptor>
> >
> > <class-descriptor class="com.microremedies.pm.persist.ojb.Unit"
> > table="UNIT">
> > <field-descriptor id="1" name="PK" column="PK" jdbc-type="INTEGER"
> > primarykey="true" autoincrement="true"/>
> > <field-descriptor id="2" name="ownerFK" column="OWNER_FK"
> > jdbc-type="INTEGER"/>
> > <field-descriptor id="3" name="addressFK" column="ADDRESS_FK"
> > jdbc-type="INTEGER"/>
> > <field-descriptor id="4" name="isCommercial" column="ISCOMMERCIAL"
> > jdbc-type="BIT"/>
> > <field-descriptor id="5" name="descr" column="DESCR"
> > jdbc-type="VARCHAR"/>
> > <reference-descriptor name="owner"
> > class-ref="com.microremedies.pm.persist.ojb.Payee" auto-retrieve="true"
> > auto-update="false" auto-delete="false">
> > <foreignkey field-id-ref="2"/>
> > </reference-descriptor>
> > <reference-descriptor name="address"
> > class-ref="com.microremedies.pm.persist.ojb.Address"
> > auto-retrieve="true" auto-update="false" auto-delete="false">
> > <foreignkey field-id-ref="3"/>
> > </reference-descriptor>
> > </class-descriptor>
> >
> > ****OJB.PROPERTIES
> >
> > repositoryFile=repository.xml
> > useSerializedRepository=false
> > useServer=false
> > BrokerServers=localhost\:2001
> > ServerThreadCount=10
> > BrokerPoolSize=10
> > UseCompression=false
> >
>PersistenceBrokerFactoryClass=org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl
> > PersistenceBrokerClass=org.apache.ojb.broker.singlevm.PersistenceBrokerImpl
> > maxActive=100
> > maxIdle=-1
> > maxWait=2000
> > timeBetweenEvictionRunsMillis=-1
> > minEvictableIdleTimeMillis=1000000
> > whenExhaustedAction=0
> >
>ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl
> > maxConnectionsInPool=21
> > useAutoCommit=1
> > ignoreAutoCommitExceptions=false
> > SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl
> > SequenceManagerClass=org.apache.ojb.broker.util.sequence.SequenceManagerHiLoImpl
> > SequenceManagerGrabSize=10
> > SequenceManagerGlobalIDs=false
> > ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheDefaultImpl
> > LockManagerClass=org.apache.ojb.odmg.locking.LockManagerDefaultImpl
> > LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl
> > LockTimeout=60000
> > ImplicitLocking=true
> > LockAssociations=WRITE
> > LoggerClass=org.apache.ojb.broker.util.logging.PoorMansLoggerImpl
> > LoggerConfigFile=log4j.properties
> > DEFAULT.LogLevel=INFO
> > org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.LogLevel=INFO
> > org.apache.ojb.broker.PersistenceBrokerFactory.LogLevel=INFO
> > org.apache.ojb.broker.server.PersistenceBrokerClient.LogLevel=INFO
> > org.apache.ojb.broker.server.RequestProcessor.LogLevel=INFO
> > org.apache.ojb.broker.server.BrokerPool.LogLevel=INFO
> > org.apache.ojb.broker.metadata.RepositoryXmlHandler.LogLevel=INFO
> > org.apache.ojb.broker.accesslayer.JdbcAccess.LogLevel=INFO
> > org.apache.ojb.broker.accesslayer.RsIterator.LogLevel=INFO
> > org.apache.ojb.broker.accesslayer.StatementsForClass.LogLevel=INFO
> > org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=INFO
> > ODMG.LogLevel=INFO
> > JDO.LogLevel=INFO
> > performance.LogLevel=INFO
> > soda.LogLevel=INFO
> > ConfigurableFactory.LogLevel=INFO
> > OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl
> > SqlInLimit=200
> >
>PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl
> > OJBTxManagerClass=org.apache.ojb.odmg.LocalTxManager
> >
>JTATransactionManagerClass=org.apache.ojb.otm.transaction.factory.JBossTransactionManagerFactory
> > autobuild=true
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]