[ http://issues.apache.org/jira/browse/JDO-194?page=comments#action_12360951 ]
Michael Bouschen commented on JDO-194: -------------------------------------- Interesting! Yes, I'm using Windows. I think it has to do with queries using a variable with the same name as a class (modulo case). The above JDOQL query SELECT FROM org.apache.jdo.tck.pc.company.Employee WHERE team.contains(employee) & employee.firstname == 'emp1First' defines an implicit variable called employee where Employee is the base name of the candidate class. It does not matter whether the variable is defined implicitly or explicitly. The problem disappears if I change the variable name to e.g. 'emp'. The method names in the stack trace suggest that JPOX tries to resolve the identifier 'employee' as class name. Is that the case. Which occurrence of 'employee' is causing the problem, the contains argument or the left hand side of the equals comparison? > JPOX does not support implicit variables. > ----------------------------------------- > > Key: JDO-194 > URL: http://issues.apache.org/jira/browse/JDO-194 > Project: JDO > Type: Bug > Components: tck20 > Reporter: Michael Watzek > Assignee: Erik Bengtson > > JPOX throws an exception executing queries having implicit parameters (see > below). The bug may be reproduced executing test case > org.apache.jdo.tck.query.jdoql.variables.VariablesAndFields. > Query: SELECT FROM org.apache.jdo.tck.pc.company.Employee WHERE > team.contains(employee) & employee.firstname == 'emp1First' > org.jpox.store.exceptions.NoSuchPersistentFieldException: Field "employee" > does not exist in org.apache.jdo.tck.pc.company.Person or is not persistent > at > org.jpox.store.rdbms.table.ClassTable.getFieldMapping(ClassTable.java:1790) > at > org.jpox.store.expression.TableExpression.newFieldExpression(TableExpression.java:183) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileIdentifier(JDOQLQuery.java:1534) > at > org.jpox.store.query.JDOQLQuery$Compiler.compilePrimary(JDOQLQuery.java:1299) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpressionNotPlusMinus(JDOQLQuery.java:1245) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpression(JDOQLQuery.java:1226) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileMultiplicativeExpression(JDOQLQuery.java:1179) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileAdditiveExpression(JDOQLQuery.java:1156) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileRelationalExpression(JDOQLQuery.java:1125) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1102) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1090) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1078) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1066) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1054) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1036) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1013) > at > org.jpox.store.query.JDOQLQuery$Compiler.compilePrimary(JDOQLQuery.java:1346) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpressionNotPlusMinus(JDOQLQuery.java:1245) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpression(JDOQLQuery.java:1226) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileMultiplicativeExpression(JDOQLQuery.java:1179) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileAdditiveExpression(JDOQLQuery.java:1156) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileRelationalExpression(JDOQLQuery.java:1125) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1102) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1090) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1078) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1066) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1054) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1036) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1013) > at > org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:891) > at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:569) > at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:639) > at org.jpox.store.query.Query.executeWithMap(Query.java:907) > at org.jpox.store.query.Query.executeWithArray(Query.java:887) > at org.jpox.store.query.Query.execute(Query.java:819) > at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:706) > at > org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:625) > at > org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:601) > at > org.apache.jdo.tck.query.jdoql.variables.VariablesAndFields.testPositive(VariablesAndFields.java:148) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at junit.framework.TestCase.runTest(TestCase.java:154) > at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at junit.textui.TestRunner.doRun(TestRunner.java:116) > at junit.textui.TestRunner.doRun(TestRunner.java:109) > at > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:120) > at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:95) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
