我有一个包含两个模块的项目。一个将暴露给用户,另一个不暴露给用户。另一个是批处理模块。两个模块使用相同的一组模型类。
暴露给用户的模块需要使用首次提交获胜策略,以便在同时修改条目时抛出StaleObjectStateException,我们可以处理它。而在批处理模块中,它不需要抛出任何异常,只有最后一次提交会覆盖前一次提交。
但由于这两个模块使用相同的模型类,因此模型类启用了休眠版本控制。因此,始终启用"首次提交即获胜"策略。
有没有一种方法可以为两个模块配置不同的策略。
非常感谢。
您需要在StaleObjectStateException
的catch块中控制它。
try{
..............//Your code...
session.saveOrUpdate(bean);
} catch (StaleObjectStateException e){
if(forceUpdate){
long version = getLatestVersionFromDB(bean);
bean.setVersion(version)
session.saveOrUpdate(bean);
}
}