关于mongoDB的upsert方法属性不一致报错记录

关于mongoDB的upsert方法属性不一致报错记录
使用mongoDB添加诗句的时候出现Exception in thread “main” java.lang.IllegalAccessError: tried to access class org.springframework.beans.PropertyMatc错误。
查询了大量文章,跑了源码发现mongodb的upsert方法有一个更新和插入的操作。
在这里插入图片描述
先进行进行查询操作。在进行插入操作。然后就会发生如下错误:
org.springframework.data.mongodb.core.convert.QueryMapper#getMappedObject(org.bson.conversions.Bson, org.springframework.data.mongodb.core.mapping.MongoPersistentEntity<?>)方法就是直接用来映射对象的,在这个方法中的代码Field field = createPropertyField(entity, key, mappingContext);是用来构建字段的映射关系。

最终会指向org.springframework.data.mongodb.core.convert.QueryMapper.MetadataBackedField#getPath(java.lang.String)这个方法中出问题的就是PropertyPath path = PropertyPath.from(pathExpression.replaceAll("\.\d+", “”), entity.getTypeInformation());这行代码又会调用org.springframework.data.mapping.PropertyPath#from(java.lang.String, org.springframework.data.util.TypeInformation<?>)
当我们字段别名映射不上时,报错。

还有,因为我项目之前是分布式的,由于需求改为单点项目。架构的各种包的版本不一致。我的这个是由于spring-data-mongo的其中的spring-commons的jar包版本冲突导致。这个包中含有upsert方法的getTypeInformation的定义。而我使用的11.1的版本和冲突的11.3的版本中,11.3没有这个方法。是因为在spring4.2.0之后的mongo增加了大量的自动配置功能,具体的就问度娘。所以不存在这个方法,从而找不到属性配置,而报错。找到原因直接解决冲突。搞定。现在已经是凌晨了,没时间上图了,恢复bug也要时间,就这样简单的记录下。以防忘记。
还有许多是jar冲突引起的各种错误,以后碰到这种进入源码的报错第一时间警惕,
第一:属性传值有误,
第二:jar包冲突,
第三:版本不兼容。
睡觉…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值