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中的

猜你喜欢

转载自www.cnblogs.com/Arthemis-z/p/12094937.html
今日推荐