Hi,
I have a problem to query on composite pattern in OJB (db-ojb-1.0.rc1).
Let's assume that I have Test composite pattern from JUnit in OJB:
<class-descriptor class="Test" ...>
<extent-class class-ref="TestCase" />
<extent-class class-ref="TestSuite" />
<field-descriptor name="id" primarykey="true" autoincrement="true" ... />
<field-descriptor name="idTest" ... />
</class-descriptor>
<class-descriptor class="TestCase" ...>
<field-descriptor name="id" primarykey="true" autoincrement="true" ... />
<field-descriptor name="idTest" ... />
<field-descriptor name="caseName" jdbc-type="VARCHAR" ... />
</class-descriptor>
<class-descriptor class="TestSuite" ...>
<field-descriptor name="id" primarykey="true" autoincrement="true" ... />
<field-descriptor name="idTest" ... />
<field-descriptor name="suiteName" jdbc-type="VARCHAR" ... />
<collection-descriptor name="test" element-class-ref="Test" ...>
<inverse-foreignkey field-ref="idTest"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor class="Foo" ...>
<field-descriptor name="id" primarykey="true" autoincrement="true" ... />
<field-descriptor name="idTest" ... />
<reference-descriptor name="test" class-ref="Test" ...>
<foreignkey field-ref="idTest"/>
</reference-descriptor>
</class-descriptor>
1. This works ok:
Criteria crit = new Criteria();
crit.addEqualTo("test.caseName", "test 1");
Query query = QueryFactory.newQuery(Foo.class, crit);
query.addPathClass("test", TestCase.class);
Collection results = broker.getCollectionByQuery(query);
2. This don't work:
Criteria crit = new Criteria();
crit.addEqualTo("test.test.caseName", "test 2");
Query query = QueryFactory.newQuery(Foo.class, crit);
query.addPathClass("test", TestSuite.class); // first test
query.addPathClass("test", TestCase.class); // second test
Collection results = broker.getCollectionByQuery(query);
3. Still doesn't work:
<class-descriptor class="Foo" ...>
<field-descriptor name="id" primarykey="true" autoincrement="true" ... />
<reference-descriptor name="aTest" class-ref="Test" ...>
<foreignkey field-ref="idTest"/>
</reference-descriptor>
</class-descriptor>
Criteria crit = new Criteria();
crit.addEqualTo("aTest.test.caseName", "test 3");
Query query = QueryFactory.newQuery(Foo.class, crit);
query.addPathClass("aTest", TestSuite.class);
query.addPathClass("test", TestCase.class);
Collection results = broker.getCollectionByQuery(query);
Can I query on composite pattern in OJB?
Thanks for help
Dariusz Kies
__________________________________________________
Do you Yahoo!?
Yahoo! Web Hosting - establish your business online
http://webhosting.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]