Hi Erik, On Oct 28, 2006, at 7:19 AM, Erik Bengtson wrote:
Michael,I was reading Craig comments and noted that "str" is an unbound variable
The variable "str" is bound by the filter q.setFilter ("this.stringCol.contains(str)").
Craig
and nota parameter, and now I think the query is invalid since there is no value forstr. Unbound variables are not null values. Quoting Craig L Russell <[EMAIL PROTECTED]>:Hi Michael, From the spec, <spec> The candidate tuples are the cartesian product of the candidate class and all variables used in the result. The re- sult tuples are the tuples of the candidate class and all variables used in the result that sat- isfy the filter. The result is the collection of result expressions projected from the result tuples. </spec> On Oct 27, 2006, at 2:12 PM, Michael Bouschen wrote:Hi, I'm having problems running JDOQL queries that group by a variable. I think the queries below are valid, but I would like to double check this. If you agree that the queries are valid JDOQL, I will check the TCK to add these queries to existing TCK tests or add new test cases. I tried the queries with JPOX version 1.1.3 and with the nightly build from Oct 27 (no difference). I will send a test case to reproduce the problem to Erik and Andy, since I cannot attach archives here. The class model is simple: pc class A has a field stringCol which is a collection of strings and another field bCol which is a collection of instances of class B. The following query groups the class A instances by the strings in their string collection: Query q = pm.newQuery(A.class); q.declareVariables("java.lang.String str"); q.setFilter("this.stringCol.contains(str)"); q.setGrouping("str"); q.setResult("str");The cartesian product of the candidate class and all variables is a the cartesian product of all A instances and all strings contained in any stringCol. The result tuples consist of tuples of (A, String) where the elements of stringCol are projected and associated with the instances of A whence they came. The result comes from grouping and projecting the String from the result tuple. So, This query should collect all of the unique strings in all instances of A stringCol. The result is a List<String>. I don't know offhand how the implementation can do this trick (returning a List<Object> in which each element is a String is easy).This results in an exception: JDOUserException: Unable to find the field "str" in the candidate class. It is possible that this field is a field in a subclass, but it is illegal to reference fields directly when they are in a subclass. I get a different exception when adding an aggregate to the result clause q.setResult("str, count(this)"); JDOUserException: Unconstrained variable referenced: strThis query should collect all of the unique strings in all instances of A stringCol, count them, and return the string and count of occurrences. The result is a List<Object[ ]> Each element consists ofan Object[ ] containing a String in element 0 and a Long in element 1.The behavior is different when iterating a collection of pc instances:Query q = pm.newQuery(A.class); q.declareVariables("model.B b"); q.setFilter("this.bCol.contains(b)"); q.setGrouping("b"); q.setResult("count(this), b"); This results in: JDOUserException: The result clause has a field expression "UnboundVariable "UNBOUND_B.ID"" that doesnt appear in the grouping. Any result specification has to be present in the grouping when grouping is specified.This query should collect all of the unique B instances in all instances of A bCol, count them, and return the B and count of occurrences. The result is a List<Object[ ]> Each element consists of an Object[ ] containing a B in element 0 and a Long in element 1. CraigAny help is appreciated. Thanks! Regards Michael -- 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 BerlinCraig RussellArchitect, Sun Java Enterprise System http://java.sun.com/products/ jdo408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp!
Craig Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp!
smime.p7s
Description: S/MIME cryptographic signature
