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]>

Reply via email to