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]