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