Hi Luca,
Craig is right, I overlooked you tried to declare list as a variable. So
the query works if you declare list as a parameter, so calling
query.declareParameters("java.util.Collection list" ) instead of
query.declareVariables.
Regards Michael
Hi Luca,
the JDOQL query you specified below should work as it is today. As you
said the contains operator expects a collection on the left. This
collection may be a collection parameter and does not need to be a
collection field.
Regards Michael
Hi,
Working in real-world applications using JDO 2.0 I beware about the
SQL IN
equivalend operator missed by spec. An example:
public class Questionnaire{
...
private Employee employee;
...
}
I'd like to get any Questionnaire instances for the following employee:
Luca, Robert and Chris. The CONTAINS operator works only on
collection, but
it could be useful to execute a query like this:
List<Employee> list= new ArrayList<Employee>();
// LET'S THINK E1-E2-E3 are loaded before
List.add( e1 );
List.add( e2 );
List.add( e3 );
Query query = iManager.newQuery();
query.setClass( Questionnaire.class );
query.setFilter( "list.contains( employee )" );
query.declareVariables( "java.util.Collection list" );
query.execute( list );
JDO implementation should translate the query by using SQL IN
operator and
the OID of Employee objects contained in the LIST collection passed as
parameter.
What do you think?
Bye,
Luca Garulli
CTO of Asset Data srl
www.RomaFramework.org
--
Michael Bouschen [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED] http://www.tech.spree.de/
Tel.:++49/30/235 520-33 Buelowstr. 66
Fax.:++49/30/2175 2012 D-10783 Berlin