hi dariusz,

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]



Reply via email to