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]

Reply via email to