JDO异常:"查询需要1个参数,但已提供2个值."

Uro*_*Uro 5 java parameters google-app-engine jdo

尽管我的JDO查询包含两个 declareParameters语句,但下面的代码会产生一个错误,声称只接受一个参数:

查询需要1个参数,但已提供2个值.

这两个参数是amountPtaxP:

 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); 
Run Code Online (Sandbox Code Playgroud)

但是,通过以下更改,它可以正常工作.

 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); 
Run Code Online (Sandbox Code Playgroud)

我的问题是:原始语法出了什么问题?

更新:此问题已被其他人报告,但没有解释.

Tho*_*ler 6

JDO API似乎需要所有的参数都设置一次.调用该方法declareParameters,该方法似乎是"setter",而不是"adder".方法名称可能会产生误导,文档不是很好,但它似乎就是这样.

这是由"附加信息",这两个支持设置器和一个加法器不同:addExtension(),setExtensions().