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]>