Java JDO例外情况:";查询需要1个参数,但提供了2个值。”;
尽管我的JDO查询包含两个Java JDO例外情况:";查询需要1个参数,但提供了2个值。”;,java,google-app-engine,parameters,jdo,Java,Google App Engine,Parameters,Jdo,尽管我的JDO查询包含两个declareParameters语句,但下面的代码生成一个错误,声称只接受一个参数: 查询需要1个参数,但提供了2个值 这两个参数是amountP和taxP: javax.jdo.Query query= pm.newQuery(Main.class); query.setFilter("amount == amountP && tax < taxP"); query.declareParameters("int amountP");
declareParameters
语句,但下面的代码生成一个错误,声称只接受一个参数:
查询需要1个参数,但提供了2个值
这两个参数是amountP
和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);
setFilter(“amount==amountP&&tax
但是,通过以下更改,它可以正常工作。
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);
javax.jdo.Query Query=pm.newQuery(Main.class);
setFilter(“amount==amountP&&tax
我的问题是:原始语法有什么问题?
更新:但没有解释。很明显,对declareParameters的第二次调用替换了第一次调用中声明的参数。第二个示例中显示了声明多个参数的正确方法。似乎要求同时设置所有参数。该方法称为
declareParameters
,它似乎是一个“setter”,而不是一个“adder”。方法名称可能有误导性,文档也不是很好,但它似乎就是这样
这与既支持setter又支持adder的“extensions”不同:
addExtension()
,setExtensions()
,官方文档中的解释如下:
- 声明查询执行的参数列表。参数 声明是包含一个或多个查询参数的字符串 用逗号分隔的声明。中指定的每个参数 执行查询时,参数声明必须绑定到值 执行
- 参数:参数-以逗号分隔的参数列表
void declareParameters(java.lang.String parameters)