0

我有一个在线和离线日期的产品 pojo

我使用以下查询来获取online日期为Nulloffline日期为的所有产品Null。但以下查询仅在both online and offline date are null.

query.addCriteria(Criteria.where(Product.IS).is(is).andOperator( Criteria.where(Product.OFFLINE_DATE).is(null).orOperator(Criteria.where(Product.ONLINE_DATE).is(null))));

有什么线索吗?

4

1 回答 1

1

使用上面的 Query 对象,您正在创建类似于

{ "productId" : "1" , "$and" : [ { "offlineDate" :  null  , "$or" : [ { "onlineDate" :  null }]}]}

你想在哪里查询类似的东西{ "productId" : "1" , "$and" : [ { "$or" : [ { "offlineDate" : null } , { "onlineDate" : null }]}]}

为 orOperator 创建一个 Criteria 对象并将其放入 andOperator 中:

 Criteria orOperator = new Criteria().orOperator(Criteria.where(Product.OFFLINE_DATE).is(null),
            Criteria.where(Product.ONLINE_DATE).is(null));
    query.addCriteria(Criteria.where(Product.IS).is(is).andOperator(orOperator));

我希望这有帮助。

于 2016-06-09T19:06:16.117 回答