有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

自定义存储库的java Spring数据解决方案优先级

我需要在Spring Data Solr自定义存储库中实现以下功能:

(X OR Y) AND Z

我目前的代码如下:

Criteria criteria = new Criteria("x").is(X_VALUE);
criteria = criteria.or(new Criteria("y").is(Y_VALUE);
criteria = criteria.and(new Criteria("z").is(Z_VALUE);

但运行此代码时,我得到以下优先级:

X OR (Y AND Z)

有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    当前API不允许这种条件组合。在DATASOLR-105上附加了一个补丁,虽然它不能完全解决问题,但可能会有所帮助

    现在使用SimpleStringCriteria可能会有所帮助。请注意,值必须转换为Solr可读格式

    new SimpleQuery(new SimpleStringCriteria("(x or y) and z"));
    

    更新

    版本1.2将修复此问题,因此可以按如下方式创建查询

    Criteria orPart = Criteria.where("x").is("foo").or("y").is("bar");
    Criteria andPart = Criteria.where("z").is("roo");
    Query query = new SimpleQuery(orPart.and(andPart));