I've got a setup almost exactly like the M:N examples in the test  
suite, and for the life of me, can't figure out why this won't work for  
me, so I'm hoping someone here can help. I know it's a lot to ask, so  
thanks in advance for taking a look. Here's how the classes look:

User -> Role <- Group

instead of the test code's Person -> Role <- Project

My test case and repository entry are below. If I comment out the  
following (and the corresponding block in the Group class):

        <collection-descriptor name="roles"
                                 
element-class-ref="com.stmpjmpr.system.Role">
             <inverse-foreignkey field-id-ref="1"/>
         </collection-descriptor>

the rest works fine. If I leave this in, I get this:

.[BOOT] INFO: OJB.properties:  
file:/Users/stmpjmpr/Java/Projects/stmpjmpr/OJB.properties
[org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl] INFO:  
Already created persistence broker instances: 0
[DEFAULT] INFO: OJB Descriptor Repository:  
file:/Users/stmpjmpr/Java/Projects/stmpjmpr/classes/repository.xml
[DEFAULT] INFO: ...Finished parsing
[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.AbstractPoolableConnectionFactory]  
INFO: # Create connection pool for JdbcDescriptorKey 488943901 #
[org.apache.ojb.broker.accesslayer.AbstractConnectionFactory] INFO: #  
Already created connections: 1 returning :  
org.postgresql.jdbc2.Connection@39b841
[org.apache.ojb.broker.accesslayer.RsIterator] DEBUG: RsIterator(Query  
from class com.stmpjmpr.system.User where login =  ? , table:       
        users
FieldDescriptions:       
[Lorg.apache.ojb.broker.metadata.FieldDescriptor;@3fb859)
[org.apache.ojb.broker.accesslayer.JdbcAccess] DEBUG: executeQuery :  
Query from class com.stmpjmpr.system.User where login =  ?
[org.apache.ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: SELECT  
A0.url,A0.activity_visible,A0.id,A0.birthdate,A0.status,A0.first_name,A0 
.last_login,A0.update_required,A0.email,A0.date_created,A0.login,A0.emai 
l_visible,A0.password,A0.last_name FROM users A0 WHERE A0.login =  ?
[org.apache.ojb.broker.accesslayer.RsIterator] DEBUG: hasNext() -> true
[DEFAULT] INFO: OJB Descriptor Repository:  
file:/Users/stmpjmpr/Java/Projects/stmpjmpr/classes/repository.xml
[DEFAULT] INFO: ...Finished parsing
[org.apache.ojb.broker.accesslayer.RsIterator] DEBUG: RsIterator(Query  
from class com.stmpjmpr.system.Role where userId =  ? , table:       
        roles
FieldDescriptions:       
[Lorg.apache.ojb.broker.metadata.FieldDescriptor;@7119f5)
[org.apache.ojb.broker.accesslayer.JdbcAccess] DEBUG: executeQuery :  
Query from class com.stmpjmpr.system.Role where userId =  ?
[org.apache.ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: SELECT  
A0.view,A0.user_id,A0.name,A0.post,A0.edit,A0.group_id,A0.delete FROM  
roles A0 WHERE A0.user_id =  ?
[org.apache.ojb.broker.accesslayer.RsIterator] DEBUG: hasNext() -> true
[org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl] INFO:  
Already created persistence broker instances: 1
[org.apache.ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: SELECT  
name,description,id FROM groups WHERE (groups.id = ? )
[org.apache.ojb.broker.accesslayer.RsIterator] DEBUG: RsIterator(Query  
from roles where (roles.group_id =  ? )  AND roles.user_id = id, table:  
        users
FieldDescriptions:       
[Lorg.apache.ojb.broker.metadata.FieldDescriptor;@3fb859)
[org.apache.ojb.broker.accesslayer.JdbcAccess] DEBUG: executeQuery :  
Query from roles where (roles.group_id =  ? )  AND roles.user_id = id
java.lang.ClassCastException:  
org.apache.ojb.broker.query.QueryByMtoNCriteria
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.getItemClassDescriptor(Sq 
lStatement.java:378)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.getTableAlias(SqlStatemen 
t.java:322)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.buildJoinTreeForColumn(Sq 
lStatement.java:785)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.buildJoinTree(SqlStatemen 
t.java:756)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.splitCriteria(SqlStatemen 
t.java:704)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.<init>(SqlStatement.java: 
134)
        at  
org.apache.ojb.broker.accesslayer.SqlSelectStatement.<init>(SqlSelectSta 
tement.java:84)
        at  
org.apache.ojb.broker.accesslayer.SqlGenerator.getPreparedSelectStatemen 
t(SqlGenerator.java:186)
        at  
org.apache.ojb.broker.accesslayer.JdbcAccess.executeQuery(JdbcAccess.jav 
a:226)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:249)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getIteratorFromQuer 
y(PersistenceBrokerImpl.java:1526)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1115)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection( 
PersistenceBrokerImpl.java:922)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections 
(PersistenceBrokerImpl.java:974)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persist 
enceBrokerImpl.java:1481)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity 
(PersistenceBrokerImpl.java:1562)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject 
(PersistenceBrokerImpl.java:1080)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(P 
ersistenceBrokerImpl.java:873)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences( 
PersistenceBrokerImpl.java:851)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt 
erator.java:421)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:205)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection( 
PersistenceBrokerImpl.java:922)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections 
(PersistenceBrokerImpl.java:974)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt 
erator.java:422)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:205)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1393)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Pe 
rsistenceBrokerImpl.java:1602)
        at com.stmpjmpr.system.UserTest.testAdminUser(UserTest.java:97)
        at java.lang.reflect.Method.invoke(Native Method)
        at junit.framework.TestCase.runTest(TestCase.java:166)
        at junit.framework.TestCase.runBare(TestCase.java:140)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:131)
        at junit.framework.TestSuite.runTest(TestSuite.java:173)
        at junit.framework.TestSuite.run(TestSuite.java:168)
        at junit.textui.TestRunner.doRun(TestRunner.java:74)
        at junit.textui.TestRunner.start(TestRunner.java:234)
        at junit.textui.TestRunner.main(TestRunner.java:112)
[org.apache.ojb.broker.accesslayer.RsIterator] ERROR:  
org.apache.ojb.broker.query.QueryByMtoNCriteria
java.lang.ClassCastException:  
org.apache.ojb.broker.query.QueryByMtoNCriteria
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.getItemClassDescriptor(Sq 
lStatement.java:378)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.getTableAlias(SqlStatemen 
t.java:322)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.buildJoinTreeForColumn(Sq 
lStatement.java:785)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.buildJoinTree(SqlStatemen 
t.java:756)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.splitCriteria(SqlStatemen 
t.java:704)
        at  
org.apache.ojb.broker.accesslayer.SqlStatement.<init>(SqlStatement.java: 
134)
        at  
org.apache.ojb.broker.accesslayer.SqlSelectStatement.<init>(SqlSelectSta 
tement.java:84)
        at  
org.apache.ojb.broker.accesslayer.SqlGenerator.getPreparedSelectStatemen 
t(SqlGenerator.java:186)
        at  
org.apache.ojb.broker.accesslayer.JdbcAccess.executeQuery(JdbcAccess.jav 
a:226)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:249)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getIteratorFromQuer 
y(PersistenceBrokerImpl.java:1526)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1115)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection( 
PersistenceBrokerImpl.java:922)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections 
(PersistenceBrokerImpl.java:974)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persist 
enceBrokerImpl.java:1481)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity 
(PersistenceBrokerImpl.java:1562)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getReferencedObject 
(PersistenceBrokerImpl.java:1080)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(P 
ersistenceBrokerImpl.java:873)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences( 
PersistenceBrokerImpl.java:851)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt 
erator.java:421)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:205)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection( 
PersistenceBrokerImpl.java:922)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections 
(PersistenceBrokerImpl.java:974)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt 
erator.java:422)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:205)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1393)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Pe 
rsistenceBrokerImpl.java:1602)
        at com.stmpjmpr.system.UserTest.testAdminUser(UserTest.java:97)
        at java.lang.reflect.Method.invoke(Native Method)
        at junit.framework.TestCase.runTest(TestCase.java:166)
        at junit.framework.TestCase.runBare(TestCase.java:140)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:131)
        at junit.framework.TestSuite.runTest(TestSuite.java:173)
        at junit.framework.TestSuite.run(TestSuite.java:168)
        at junit.textui.TestRunner.doRun(TestRunner.java:74)
        at junit.textui.TestRunner.start(TestRunner.java:234)
        at junit.textui.TestRunner.main(TestRunner.java:112)
java.util.NoSuchElementException
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:221)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection( 
PersistenceBrokerImpl.java:922)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections 
(PersistenceBrokerImpl.java:974)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt 
erator.java:422)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:205)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1393)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Pe 
rsistenceBrokerImpl.java:1602)
        at com.stmpjmpr.system.UserTest.testAdminUser(UserTest.java:97)
        at java.lang.reflect.Method.invoke(Native Method)
        at junit.framework.TestCase.runTest(TestCase.java:166)
        at junit.framework.TestCase.runBare(TestCase.java:140)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:131)
        at junit.framework.TestSuite.runTest(TestSuite.java:173)
        at junit.framework.TestSuite.run(TestSuite.java:168)
        at junit.textui.TestRunner.doRun(TestRunner.java:74)
        at junit.textui.TestRunner.start(TestRunner.java:234)
        at junit.textui.TestRunner.main(TestRunner.java:112)
[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: null
java.util.NoSuchElementException
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:221)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection( 
PersistenceBrokerImpl.java:922)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections 
(PersistenceBrokerImpl.java:974)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt 
erator.java:422)
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:205)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1393)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Pe 
rsistenceBrokerImpl.java:1602)
        at com.stmpjmpr.system.UserTest.testAdminUser(UserTest.java:97)
        at java.lang.reflect.Method.invoke(Native Method)
        at junit.framework.TestCase.runTest(TestCase.java:166)
        at junit.framework.TestCase.runBare(TestCase.java:140)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:131)
        at junit.framework.TestSuite.runTest(TestSuite.java:173)
        at junit.framework.TestSuite.run(TestSuite.java:168)
        at junit.textui.TestRunner.doRun(TestRunner.java:74)
        at junit.textui.TestRunner.start(TestRunner.java:234)
        at junit.textui.TestRunner.main(TestRunner.java:112)
E
Time: 6.048
There was 1 error:
1) testAdminUser(com.stmpjmpr.system.UserTest)
java.util.NoSuchElementException
        at  
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:221)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1142)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1285)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1407)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer 
y(PersistenceBrokerImpl.java:1393)
        at  
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Pe 
rsistenceBrokerImpl.java:1602)
        at com.stmpjmpr.system.UserTest.testAdminUser(UserTest.java:97)

FAILURES!!!
Tests run: 1,  Failures: 0,  Errors: 1

Process terminated with exit code -1

************
Here's my repository entry:

     <class-descriptor class="com.stmpjmpr.system.User" table="users">
         <field-descriptor id="1"
                           name="id"
                           jdbc-type="INTEGER"
                           column="id"
                           primarykey="true"
                           autoincrement="true"
          />
         <field-descriptor name="login" id="2" jdbc-type="VARCHAR"  
column="login"/>
         <field-descriptor name="firstName" id="3" jdbc-type="VARCHAR"  
column="first_name"/>
         <field-descriptor name="lastName" id="4" jdbc-type="VARCHAR"  
column="last_name"/>
         <field-descriptor name="password" id="5" jdbc-type="VARCHAR"  
column="password"/>
         <field-descriptor name="dateCreated" id="6"  
jdbc-type="TIMESTAMP" column="date_created"/>
         <field-descriptor name="lastLogin" id="7" jdbc-type="TIMESTAMP"  
column="last_login"/>
         <field-descriptor name="status" id="8" jdbc-type="INTEGER"  
column="status"/>
         <field-descriptor name="birthdate" id="9" jdbc-type="DATE"  
column="birthdate"/>
         <field-descriptor name="email" id="10" jdbc-type="VARCHAR"  
column="email"/>
         <field-descriptor name="url" id="11" jdbc-type="VARCHAR"  
column="url"/>
         <field-descriptor name="emailVisible" id="12" jdbc-type="BIT"  
column="email_visible"/>
         <field-descriptor name="activityVisible" id="13"  
jdbc-type="BIT" column="activity_visible"/>
         <field-descriptor name="updateRequired" id="14" jdbc-type="BIT"  
column="update_required"/>
         <collection-descriptor name="roles"
                                 
element-class-ref="com.stmpjmpr.system.Role">
             <inverse-foreignkey field-id-ref="1"/>
         </collection-descriptor>
         <collection-descriptor
             name="groups"
             element-class-ref="com.stmpjmpr.system.Group"
             auto-retrieve="true"
             auto-update="true"
             indirection-table="roles"
         >
             <fk-pointing-to-this-class column="user_id"/>
             <fk-pointing-to-element-class column="group_id"/>
         </collection-descriptor>
     </class-descriptor>

     <class-descriptor class="com.stmpjmpr.system.Group" table="groups" >
         <field-descriptor name="id" id="1" jdbc-type="INTEGER"  
column="id" primarykey="true" autoincrement="true"/>
         <field-descriptor name="name" id="2" jdbc-type="VARCHAR"  
column="name"/>
         <field-descriptor name="description" id="3" jdbc-type="VARCHAR"  
column="description"/>
         <!--<collection-descriptor name="roles"  
element-class-ref="com.stmpjmpr.system.Role">
             <inverse-foreignkey field-id-ref="2"/>
         </collection-descriptor>-->
         <collection-descriptor
             name="users"
             element-class-ref="com.stmpjmpr.system.User"
             auto-retrieve="true"
             auto-update="true"
             indirection-table="roles"
         >
             <fk-pointing-to-this-class column="group_id"/>
             <fk-pointing-to-element-class column="user_id"/>
         </collection-descriptor>
     </class-descriptor>

     <class-descriptor class="com.stmpjmpr.system.Role" table="roles">
         <field-descriptor name="userId" id="1" jdbc-type="INTEGER"  
column="user_id" primarykey="true"/>
         <field-descriptor name="groupId" id="2" jdbc-type="INTEGER"  
column="group_id" primarykey="true"/>
         <field-descriptor name="name" id="3" jdbc-type="VARCHAR"  
column="name"/>
         <field-descriptor name="allowedToView" id="4" jdbc-type="BIT"  
column="view"/>
         <field-descriptor name="allowedToPost" id="5" jdbc-type="BIT"  
column="post"/>
         <field-descriptor name="allowedToEditOthers" id="6"  
jdbc-type="BIT" column="edit"/>
         <field-descriptor name="allowedToDeleteOthers" id="7"  
jdbc-type="BIT" column="delete"/>
         <reference-descriptor name="user"  
class-ref="com.stmpjmpr.system.User">
             <foreignkey field-id-ref="1"/>
         </reference-descriptor>
         <reference-descriptor name="group"  
class-ref="com.stmpjmpr.system.Group">
             <foreignkey field-id-ref="2"/>
         </reference-descriptor>
     </class-descriptor>

*************
and my test case:

     public void testAdminUser() {
         criteria = new Criteria();
         criteria.addEqualTo("login", "Stmpjmpr");
         query = new QueryByCriteria(User.class, criteria);
         broker.beginTransaction();
         User me = (User) broker.getObjectByQuery(query);
         System.out.println("Got user: " + me.toString() + ".");
         // Collection roles = me.getRoles();
         Collection groups = me.getGroups();
         assertNotNull(groups);
         System.out.println("Groups:");
         Iterator i = groups.iterator();
         while (i.hasNext()) {
             System.out.println(i.next());
         }
         // assertNotNull(roles);
         broker.commitTransaction();
         broker.clearCache();
         broker.close();
     }

--Scott


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to