Hibernate:在不同的模块中启用首次提交胜利和最后一次提交胜利



我有一个包含两个模块的项目。一个将暴露给用户,另一个不暴露给用户。另一个是批处理模块。两个模块使用相同的一组模型类。

暴露给用户的模块需要使用首次提交获胜策略,以便在同时修改条目时抛出StaleObjectStateException,我们可以处理它。而在批处理模块中,它不需要抛出任何异常,只有最后一次提交会覆盖前一次提交。

但由于这两个模块使用相同的模型类,因此模型类启用了休眠版本控制。因此,始终启用"首次提交即获胜"策略。

有没有一种方法可以为两个模块配置不同的策略。

非常感谢。

您需要在StaleObjectStateException的catch块中控制它。

try{
    ..............//Your code...
    session.saveOrUpdate(bean);
} catch (StaleObjectStateException e){
        if(forceUpdate){
            long version = getLatestVersionFromDB(bean);
            bean.setVersion(version)
            session.saveOrUpdate(bean);
        }
}

最新更新