Hi, Here is the sql for 3: [org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG: SQL: SELECT A0.ID,A0.ID_TEST FROM FI.T_FOO A0,FI.T_TEST_SUITE A1 WHERE A0.ID_TEST=A1.ID AND (caseName = ? )
Notice that there isn't the column name for the caseName attribute and there isn't join with FI.T_TEST_CASE. I debug a little and I found that a problem is in the class org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement, method getTableAlias and call descriptors = getRoot().cld.getAttributeDescriptorsForPath(aPath); // line 655 This call return only one element:[EMAIL PROTECTED] delete=false,cascade retrieve=true,cascade store=false,is lazy=false,class of Items=class Test]] It should return three descriptors: TestSuite, TestCase and caseName. Method getAttributeDescriptorsForPath don't consider the "addPathClass" that's way it can't return the good descriptors. Thanks for help Dariusz Kies --- Jakob Braeuchi <[EMAIL PROTECTED]> wrote: > 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] > __________________________________________________ Do you Yahoo!? Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop! http://platinum.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]