您可以使用JDOQL的声明性API在子查询中使用未绑定变量吗?

问题描述

DataNucleus JDO Query Guide提供了一些示例,其中可以使用最终参数(作为匿名值或作为命名参数映射)将在外部查询中评估的绑定参数传递到子查询中。这样,尽管不一定要允许参数声明,但子查询仍可以接受参数。

Query averageSalaryQuery = pm.newQuery(Employee.class);
averageSalaryQuery.setResult("avg(this.salary)");
averageSalaryQuery.setFilter("this.lastName == :lastNameParam");

Query q = pm.newQuery(Employee.class,"salary > averageSalary");
q.declareVariables("double averageSalary");
q.addSubquery(averageSalaryQuery,"double averageSalary",null,"this.lastName");
List<Employee> results = q.executeList();

但是,指南中没有在子查询中使用未绑定变量的示例。我都尝试过

  • 在子查询对象上调用subquery.declareVariables("String my_var"),然后在过滤器中引用my_var
  • 在外部查询对象上调用outerQuery.declareVariables("String my_var"),提供my_var作为参数表达式,并在过滤器中引用:my_var

并且在两种情况下都遇到错误

 org.datanucleus.exceptions.NucleusUserException: Variable 'my_var' is unbound and cannot be determined (is it a misspelled field name? or is not intended to be a variable?)

是否可以在JDOQL子查询中使用未绑定的变量(特别是使用声明性API)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)