解决Spring mongodb 异常: java.lang.IllegalArgumentException: Could not determine IsNewStrategy (非spring boot环境)

在一次升级spring mongodb 的 版本为1.10.7.RELEASE后, 抛出如下异常

isnew

百思不得其解, 查看源码 IsNewStrategyFactorySupport 中有 getIsNewStrategy 方法,

getisnew

Why, 那肯定不是代码问题, 是配置问题吧(经验所想,旧版本1.5.6.RELEASE无此问题); 再从这方法名来分析 is new strategy (是否为新的策略)

这下确定肯定是某类新的功能配置没加上, 结果就是增加一配置,如下:

<mongo:mapping-converter base-package="your.package" db-factory-ref="mongoDbFactory"/>

 

在 spring的XML配置文件中添加即可解决. your.package 指定实体(domain)所在的包名

 

Spring data Mongodb 乐观锁实现及配置

pring 与 MongoDB整合的示例太多, 但研究的不够深入. 此处在实现Spring MongoDB乐观锁的实现及配置

1.在Domain(实体)中添加@Version字段, 类型为Long, 如下:

@Version
protected Long version;

注意这儿引入的包为:

import org.springframework.data.annotation.Version;

2.在Spring MongoDB的配置中添加auditing, 如下:

    <mongo:auditing/>

这一步必须配置, 否则在保存时会报异常 OptimisticLockingFailureException