Hello,
Oracle and DB2 allow multiple columns to be used for IN predicate in where clause. I can construct a query like this SELECT * FROM CUSTOMER C WHERE (C.STATE, C.CITY) IN (SELECT L.STATE, L.CITY FROM LOCATIONS L WHERE L.COUNTRY='USA') to retrieve a list of customers located in the same state and city present in LOCATION table with country 'USA'. I've noticed that addIn (Object column, Query subQuery) method of Criteria class accepts Object as the first parameter and was wandering if there's a way to pass a list of columns instead of just one. I was able to build a valid SQL when specified "(C.STATE , C.CITY)" as a first parameter but I don't want to use physical column names in my code. Also, notice a space between C.STATE and comma. If space not provided following exception is thrown: java.lang.StringIndexOutOfBoundsException: String index out of range: -2 at java.lang.String.substring(String.java(Compiled Code)) at org.apache.ojb.broker.util.SqlHelper.splitPath(Unknown Source) at org.apache.ojb.broker.util.SqlHelper.cleanPath(Unknown Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTreeForColu mn(Unknown Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.buildJoinTree(Unknow n Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.splitCriteria(Unknow n Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.<init>(Unknown Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.<init>(Unknown Source) at org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement.<init>(Unknown Source) at org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.getPreparedSel ectStatement(Unknown Source) at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown Source) at org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown Source) at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source) at org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unkn own Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknow n Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Unknow n Source) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery( Unknown Source) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery( Unknown Source) Thank you, Max.