hi roger, i tested the nested criteria witout any problem using the latest from repository:
Criteria crit = new Criteria(); crit.addEqualTo("name", "Bräuchi"); Criteria crit2 = new Criteria(); crit2.addEqualTo("vorname", "Jakob"); Criteria crit3 = new Criteria(); crit3.addEqualTo("vorname", "Christof"); Criteria crit4 = new Criteria(); crit4.addEqualTo("vorname", "Reto"); crit2.addOrCriteria(crit3); crit2.addOrCriteria(crit4); crit.addAndCriteria(crit2); Query query = new QueryByCriteria(Person.class, crit); broker.getCollectionByQuery(query); SELECT A0.isBoss,A0.gebDat,A0.idTest,A0.entryDate,A0.adresse,A0.idPartner,A0.name,A 0.test,A0.vorname,A0.id FROM tabPerson A0 WHERE ( A0.name = ? ) AND (A0.vorname = ? OR A0.vorname = ? OR A0.vorname = ? ) jakob ----- Original Message ----- From: "Janssen, Roger" <[EMAIL PROTECTED]> To: "OJB User List (E-mail)" <[EMAIL PROTECTED]> Sent: Wednesday, November 20, 2002 3:03 PM Subject: BUG: OJB hangs in recursive loop : stackoverflow > Hi, > > i'm using OJB 0.9.7 > > when i build a where-clause like this: > attribute1='X' and (attribute2='Y1' or attribute2='Y2' or > attribute2='Y3') > then OJB components seem to go into an infinite recursive loop (eventually > resulting in a stackoverflow). > > pseudocode: > ----------------------------------------------- > Criteria crit = new Criteria(); > crit.addEqualTo(attr1, X); > > Criteria crit2 = new Criteria(); > crit2.addEqualTo(attr2, Y1); > Criteria crit3 = new Criteria(); > crit3.addEqualTo(attr2, Y2); > Criteria crit4 = new Criteria(); > crit4.addEqualTo(attr2, Y3); > > crit2.addOrCriteria(crit3); > crit2.addOrCriteria(crit4); > > crit.addCriteria(crit2); > ---------------------------------------------- > > when i build a where-clause like this: > (attribute2='Y1' or attribute2='Y2' or attribute2='Y3') > then there is no problem. > > So the combination of a single criterium 'AND'ed with a set of 'OR'ed > criteria results in the stackoverflow. > > Note: this does NOT happen in version 0.8.375 (i tested on older release of > my application that used this OJB version). > > Part of the trace of my junit-testclass: > > [junit] java.lang.StackOverflowError > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > [junit] at > org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow > n Source) > ..................... (this goes on and on and on and > on)...................................................................... > > > I also entered this bug in scarab, don't know what is best, either mail it, > log it in scarab, both.... what is best? > > Roger Janssen > iBanx > > > ************************************************************************* > The information contained in this communication is confidential and is > intended solely for the use of the individual or entity to whom it is > addressed.You should not copy, disclose or distribute this communication > without the authority of iBanx bv. iBanx bv is neither liable for > the proper and complete transmission of the information has been maintained > nor that the communication is free of viruses, interceptions or interference. > > If you are not the intended recipient of this communication please return > the communication to the sender and delete and destroy all copies. > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>