尽管我的 JDO 查询包含TWO declareParameters
语句,下面的代码产生一个错误,声称只接受一个参数:
查询需要 1 个参数,但已提供 2 个值。
这两个参数是amountP
and taxP
:
javax.jdo.Query query= pm.newQuery(Main.class);
query.setFilter("amount == amountP && tax < taxP");
query.declareParameters("int amountP");
query.declareParameters("int taxP");
List<Main> results = (List<Main>)query.execute (amountP, taxP);
但是,通过以下更改,它可以工作。
javax.jdo.Query query= pm.newQuery(Main.class);
query.setFilter("amount == amountP && tax < taxP");
query.declareParameters("int amountP, int taxP");
List<Main> results = (List<Main>)query.execute (amountP, taxP);
我的问题是:原来的语法有什么问题?
Update: 此问题已被其他人报告 http://markmail.org/message/7rru3jkxg3zdrfbk#query:+page:1+mid:7rru3jkxg3zdrfbk+state:results但没有解释。
The JDO API http://www.jpox.org/docs/1_2/jdo/query.html似乎需要立即设置所有参数。该方法称为declareParameters
,这似乎是一个“setter”,而不是“adder”。方法名称可能会产生误导,而且文档也不是那么好,但它似乎就是这样。
这与同时支持 setter 和 adder 的“扩展”不同:addExtension()
, setExtensions()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)