Can you rule out that you may have incorrectly constructed those conditions (i.e. not having set the parentheses right)? Large conditions tend to become difficult to read. For instance, I'm not going to check all of your code. But in essence, you'll have to be careful about the following:
A.and(B).or(C) results in (A and B) or C A.and(B).or(C).and(D) results in ((A and B) or C) and D A.and(B.or(C)) results in A and (B or C) Now your method returns a Condition. What do you do with that returned condition? 2012/6/29 <[email protected]>: > I can do something cheap like > > > private Condition searchfilter(TreeSet<String> querytags) { > > String[] thetags = querytags.toArray(new String[] {}); > Condition condition = null; > for (int i = 0; i < thetags.length; i++) { > String query = thetags[i].trim(); > Integer querynum = null; > try { > querynum = Integer.valueOf(query); > } catch (NumberFormatException e) { > > } > if (i == 0) { > > condition = > Ordermain.ORDERMAIN.HIDDENKEY.equal(Ordermain.ORDERMAIN.HIDDENKEY).and(Ordermain.ORDERMAIN.HIDDENKEY.contains(querynum).or(Ordermain.ORDERMAIN.ORDERTYPE.contains(query)).or(Ordermain.ORDERMAIN.CONTACTNAME.contains(query)).or(Ordermain.ORDERMAIN.ECLIPSEACCOUNTNUMBER.contains(querynum)).or(Ordermain.ORDERMAIN.PHONE.contains(query)).or(Ordermain.ORDERMAIN.COMPANY.contains(query)).or(Ordermain.ORDERMAIN.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.FAX.contains(query)).or(Ordermain.ORDERMAIN.EMPLOYEEID.contains(query)).or(Employees.EMPLOYEES.FIRSTNAME.contains(query)).or(Employees.EMPLOYEES.LASTNAME.contains(query)).or(Employees.EMPLOYEES.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.ORDERNUMBER.contains(query)).or(Ordermain.ORDERMAIN.CUSTOMERPO.contains(query)).or(Ordermain.ORDERMAIN.NEXTACTION.contains(query)).or(Ordermain.ORDERMAIN.SEARCHTAGS.contains(query)).or(Ordermain.ORDERMAIN.ORDERSTATUS.contains(query))); > > } else { > condition = > condition.and(Ordermain.ORDERMAIN.HIDDENKEY.contains(querynum).or(Ordermain.ORDERMAIN.ORDERTYPE.contains(query)).or(Ordermain.ORDERMAIN.CONTACTNAME.contains(query)).or(Ordermain.ORDERMAIN.ECLIPSEACCOUNTNUMBER.contains(querynum)).or(Ordermain.ORDERMAIN.PHONE.contains(query)).or(Ordermain.ORDERMAIN.COMPANY.contains(query)).or(Ordermain.ORDERMAIN.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.FAX.contains(query)).or(Ordermain.ORDERMAIN.EMPLOYEEID.contains(query)).or(Employees.EMPLOYEES.FIRSTNAME.contains(query)).or(Employees.EMPLOYEES.LASTNAME.contains(query)).or(Employees.EMPLOYEES.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.ORDERNUMBER.contains(query)).or(Ordermain.ORDERMAIN.CUSTOMERPO.contains(query)).or(Ordermain.ORDERMAIN.NEXTACTION.contains(query)).or(Ordermain.ORDERMAIN.SEARCHTAGS.contains(query)).or(Ordermain.ORDERMAIN.ORDERSTATUS.contains(query))); > } > } > > return condition; > } > > > i got a extra > Ordermain.ORDERMAIN.HIDDENKEY.equal(Ordermain.ORDERMAIN.HIDDENKEY).and > but that is the only way i can group the rest into one clause
