Springboot+ElasticSearch整合使用ElasticsearchRepository字段名称为大写时的处理方法


一、问题起因:

错误信息:org.springframework.data.mapping.PropertyReferenceException: No property ... ! Did you mean ...?

如下图所示,springboot整合es时,在es中的字段名称为大写,此时使用ElasticsearchRepository自动生成查询方法时是有问题的。因为生成的方法采用的是驼峰命名规则,如图中使用"findBySTORETIME"接口,则默认字段值为"sTORETIME",但我们的字段却为"STORETIME",所以产生错误!

二、处理方法:

在DAO接口层,接口名称上添加"@Query"注解,如下图所示: 

@Query("{\"bool\" : {\"must\" : {\"term\" : {\"STORETIME\" : \"?0\"}}}}")  

注解中,规定了字段使用大写表示,则解决了上述问题。其中,"?0"代表第一个参数storetime,后面以此类推

@JsonProperty("DREREFERENCE")的使用,是为了将ES返回的字段内容与字段对应,否则返回字段默认为小写,是不能存储在bean中的


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM