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]

Reply via email to