在项目中使用到Bigdecimal类型表示金钱,但是Solr中并没有Bigdecimal这种类型,所以我的情况就是
数据库basePrice 字段设置为decimal类型
Solr中basePrice配置 为string类型
POJO中设置为Bigdecimal类型
然后想直接使用Solr提供的@Field标签完成字段的自动映射,但是在测试的时候报错:
Caused by: org.apache.solr.client.solrj.beans.BindingException: Exception while setting value : 522.0 on public java.math.BigDecimal cn.wolfcode.shop.server.P.basePrice
查看错误源码发现底层是使用反射依次设值的,但是java中的Bigdecimal类型在反射时如果使用常用的field.set(obj,val)
会报错,也就是说这个错误实际上是因为Bigdecimal类型的字段的反射调用跟其他的有些不同,而solr并没有对其进行特殊处理,如果你使用了@Field标签对Bigdecimal类型进行映射那就会报错