what is the problem with sample 3 ? can you pleas post the sql or an error message ?
jakob
Dariusz Kies wrote:
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]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]