4.0? I was fearing Torque was a dead project? Any time table? Greg Monroe ha scritto: > Whoops, looked at the code and I think my answer was wrong. The > code is actually behaving as documented. E.g. the docs say: > > "This method adds a new criterion to the list of criterias. If a > criterion for the requested column already exists, it is > "OR"ed to the existing criterion...." > > You are using two different columns in the or statements. Therefore, > they are being treated as an add and not an or condition for each > column. > > Not intuitive, but correctly documented. Sigh. Use the criterion > method to create mix column or statements. > > FWIW, the underlying cause is that criteria object was initially > created under Java 1.2 or 1.3 and all the Collections interfaces > where not defined. So it is based on Hashtable. This has caused > some long term issues like this. One of the goals of the 4.0 > version is to replace this with a HashList. This will allow > looking at the last added criterion and applying conditionals to > it. > > >> -----Original Message----- >> From: Greg Monroe >> Sent: Friday, February 05, 2010 9:35 AM >> To: 'Apache Torque Users List' >> Subject: RE: Criteria.or not working? >> >> I think the proper syntax would be to "add" the left hand operator >> and then or the conditional with this. Rather than 2 ors which >> are right hand conditionals. E.g., the proper syntax would be: >> >> Criteria criteria = new Criteria(); >> criteria.add("user.first_name", "John"); >> criteria.or("user.last_name", "Doe"); >> UserPeer.doSelect(criteria); >> >> The syntax using two the .or methods is like trying to write an SQL >> statement like: >> >> Select * from user where or user.first='John' or user.last='Doe'; >> >> The SQL parser would choke on this. I suspect the code is assuming >> that since there is no right hand conditional the or should be treated >> as an and statement. E.g. "Null or X" is translated to just X. It >> probably should throw an invalid syntax error here. >> >> FWIW, using Criterion is really only "required" if you are using the >> same column or need parenthetical nesting. >> >> >> >>> -----Original Message----- >>> From: Ivano Luberti [mailto:lube...@archicoop.it] >>> Sent: Friday, February 05, 2010 9:08 AM >>> To: Apache Torque Users List >>> Subject: Re: Criteria.or not working? >>> >>> Sorry never tried that, I only now that is not the way the Criteria >>> class is meant to be used. >>> So I let developers talk about that. >>> Alternatively you can dig into the peer classes source code: I have >>> >> done >> >>> a few times to understand Torque behaviour and is quite well written >>> >> and >> >>> readable >>> >>> Ludwig Magnusson ha scritto: >>> >>>> Yes that works, but that was not what I asked. >>>> My question was, how can the methods and(), add() and or() all >>>> >> generate >> >>> the >>> >>>> same result? >>>> >>>> -----Original Message----- >>>> From: Ivano Luberti [mailto:lube...@archicoop.it] >>>> Sent: den 5 februari 2010 14:10 >>>> To: Apache Torque Users List >>>> Subject: Re: Criteria.or not working? >>>> >>>> If you want to combine clauses mixinn and and or operators you should >>>> use Criterion. >>>> >>>> Look here for an introduction to how build queries using Criteria and >>>> Criterion >>>> >>>> http://db.apache.org/torque/releases/torque- >>>> >> 3.3/runtime/reference/read- >> >>> from- >>> >>>> db.html >>>> >>>> Ludwig Magnusson ha scritto: >>>> >>>> >>>>> Hi! >>>>> >>>>> I have done some testing during development of a project here and it >>>>> >>> seems >>> >>>>> that criteria.and([parameters]), criteria.add([parameters]) and >>>>> criteria.or([parameters]) all generate the same query to the >>>>> >> database. >> >>>>> >>>>> E.g these three code snippets: >>>>> >>>>> Criteria criteria = new Criteria(); >>>>> >>>>> criteria.and("user.first_name", "John"); >>>>> >>>>> criteria.and("user.last_name", "Doe"); >>>>> >>>>> UserPeer.doSelect(criteria); >>>>> >>>>> >>>>> >>>>> Criteria criteria = new Criteria(); >>>>> >>>>> criteria.add("user.first_name", "John"); >>>>> >>>>> criteria.add("user.last_name", "Doe"); >>>>> >>>>> UserPeer.doSelect(criteria); >>>>> >>>>> >>>>> >>>>> Criteria criteria = new Criteria(); >>>>> >>>>> criteria.or("user.first_name", "John"); >>>>> >>>>> criteria.or("user.last_name", "Doe"); >>>>> >>>>> UserPeer.doSelect(criteria); >>>>> >>>>> >>>>> >>>>> . would all generate the Sql query >>>>> >>>>> SELECT * FROM USER WHERE first_name = "John" AND last_name = "Doe"; >>>>> >>>>> >>>>> >>>>> How can this be? >>>>> >>>>> /Ludwig >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>> -- >>> ================================================== >>> dott. Ivano Mario Luberti >>> Archimede Informatica societa' cooperativa a r. l. >>> Sede Operativa >>> Via Gereschi 36 - 56126- Pisa >>> tel.: +39-050- 580959 >>> tel/fax: +39-050-9711344 >>> web: www.archicoop.it >>> ================================================== >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: torque-user-unsubscr...@db.apache.org >>> For additional commands, e-mail: torque-user-h...@db.apache.org >>> >> DukeCE Privacy Statement: >> Please be advised that this e-mail and any files transmitted with >> it are confidential communication or may otherwise be privileged or >> confidential and are intended solely for the individual or entity >> to whom they are addressed. If you are not the intended recipient >> you may not rely on the contents of this email or any attachments, >> and we ask that you please not read, copy or retransmit this >> communication, but reply to the sender and destroy the email, its >> contents, and all copies thereof immediately. Any unauthorized >> dissemination, distribution or copying of this communication is >> strictly prohibited. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: torque-user-unsubscr...@db.apache.org >> For additional commands, e-mail: torque-user-h...@db.apache.org >> > > DukeCE Privacy Statement: > Please be advised that this e-mail and any files transmitted with > it are confidential communication or may otherwise be privileged or > confidential and are intended solely for the individual or entity > to whom they are addressed. If you are not the intended recipient > you may not rely on the contents of this email or any attachments, > and we ask that you please not read, copy or retransmit this > communication, but reply to the sender and destroy the email, its > contents, and all copies thereof immediately. Any unauthorized > dissemination, distribution or copying of this communication is > strictly prohibited. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: torque-user-unsubscr...@db.apache.org > For additional commands, e-mail: torque-user-h...@db.apache.org > > >
-- ================================================== dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it ================================================== --------------------------------------------------------------------- To unsubscribe, e-mail: torque-user-unsubscr...@db.apache.org For additional commands, e-mail: torque-user-h...@db.apache.org