微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决您可以使用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 举报,一经查实,本站将立刻删除。