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]

Reply via email to