一、問題起因:
錯誤信息: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中的