Hi Matthew,
I'm sorry I forgot to define the query result in the API version:
Hi Matthew,
I think the equivalent JDOQL would be:
Query q = pm.newQuery(Item.class);
Here is the missing result definition:
q.setResult("this.images.get(key)");
q.declareVariables("String key");
q.setFilter("this.images.containsKey(key) && ((key == 'thumbnail') ||
(key == 'full') || (key == 'high-res'))");
List result = q.execute();
or as single String JDOQL:
SELECT this.images.get(key) FROM Item
WHERE this.images.containsKey(key) && ((key == 'thumbnail') || (key
== 'full') || (key == 'high-res'))
VARIABLES String key
Alternatively you can pass the string literals used the 'in' clause as
a collection parameter:
Collection keys = new HashSet();
keys.add("thumbnail");
keys.add("full");
keys.add("high-res");
Query q = pm.newQuery(Item.class);
Here is the missing result definition:
q.setResult("this.images.get(key)");
Regards Michael
q.declareVariables("String key");
q.declareParakmeters("java.util.Collection keys");
q.setFilter("this.images.containsKey(key) && keys.contains(key)");
List result = q.execute(keys);
Regards Michael
Hi all,
I just proposed in JPA on the thread for support for Maps that JPAQL
support "#key" and "#value" for navigation through maps, much like we
can use "#key" and "#value" to define fetch groups in JDO. I took
for granted that these expressions can be used in JDOQL, and after a
search through the spec, I don't see where they can. I only see the
list of supported Map and Collection methods in 14.6.2, "Filter
specfication".
One of the JPA examples in the proposal looks like the following:
SELECT im#value
FROM Item i JOIN i.images im
WHERE im#key in ('thumbnail', 'full', 'high-res')
First, what would the equivalent JDOQL for this be?
Second, what are your thoughts on JDOQL support for "#key", "#value"
and "in"? This would allow us to write the following. This is
decidedly not very Java-like (a design goal of JDOQL), so this would
be a bit of a departure from tradition for JDOQL.
-matthew
--
[EMAIL PROTECTED] Engineering GmbH Tel.: +49/(0)30/235 520-33
Buelowstr. 66 Fax.: +49/(0)30/217 520-12
10783 Berlin mailto:[EMAIL PROTECTED]
Geschaeftsfuehrung: Anna-Kristin Proefrock
Sitz Berlin, Amtsgericht Charlottenburg, HRB 564 52