Spring Data ElasticsearchCrudRepository无法识别参数

Dan*_*iva 5 elasticsearch spring-data

我有一个带有以下变量的@Document"Project"类:

    @Document(indexName = "project-index")
    public class Project {
    ...
        @JsonProperty("import_id")
        private Long importId;

        private String title;
   ...
    //getters and setters
    }
Run Code Online (Sandbox Code Playgroud)

我的JSON如下所示

    {
       "_id" : ObjectId("5269fd92e4b0c74e42976c91"),
    ...
        "import_id" : NumberLong(1),
         "title" : "Something",
    ...
    }
Run Code Online (Sandbox Code Playgroud)

我的@Repository类就像:

    @Repository
    public interface ProjectRepository extends ElasticsearchCrudRepository<Project, String>{
        Page<Project> findByImportId(Long importId, Pageable page);
        Page<Project> findByTitleLike(String title, Pageable page);
    }
Run Code Online (Sandbox Code Playgroud)

问题是,findByImportId没有得到任何数据,而findByTitleLike工作正常,让我获取数据,我试着用不同的配置,但目前看来,SpringData不解决这有外地的IMPORT_ID搜索,即使它有@ JsonProperty已配置.此外,我试图改变变量名IMPORT_ID(也getter和setter),但在这种情况下,当我试图用findByImport_Id,findByImport_id,findByImport__Id或findByImport__id在运行时出现错误.

我知道如何将带有下划线的db变量映射到以后可以被ElasticsearchCrudRepository识别的java变量?

谢谢

小智 1

来自Spring 文档

\n\n
\n

如果您的属性名称包含下划线(例如first_name),您可以使用第二个下划线转义方法名称中的下划线。对于first_name 属性,查询方法必须命名为findByFirst__name(\xe2\x80\xa6)。

\n
\n\n

所以看来正确的是 findByImport__id

\n