我正在尝试在我的标准中添加第二个手术室。我得到一个错误Due to limitations of the com.mongodb.BasicDBObject, you can't add a second 'null' criteria
当我调试它时,我看到第一个OR正在向Criteria的HashMap添加一个值,其中null作为键。当它试图添加第二个键时,它发现空键存在,因此抛出错误。
if (par1 != null) {
query.addCriteria(
new Criteria().orOperator(
Criteria.where(Book.SOME_FIELD + "." + BookDetail.CATEGORY_FIELD).is(par1),
Criteria.where(Book.OTHER_FIELD + "." + BookDetail.CATEGORY_FIELD).is(par1)
)
);
}
if (par2 != null) {
query.addCriteria(
new Criteria().orOperator(
Criteria.where(Book.SOME_FIELD + "." + BookDetail.TYPE_FIELD).is(par2),
Criteria.where(Book.OTHER_FIELD + "." + BookDetail.TYPE_FIELD).is(par2)
)
);
}
我想用相应的字段检查非空参数。
如果我只发送一个参数,它就可以工作。问题是当我同时发送两个参数的时候。
谢谢。
1条答案
按热度按时间dced5bon1#
如果两个参数都不是null,你必须使用andOperator()将其组合成一个条件,而不是调用两个独立的addCriteria方法,类似于这样: