我有以下情况:
openSession()
tx = session.beginTransaction();
try
{
...
session.saveOrUpdate(obj_1);
...
session.saveOrUpdate(obj_2);
...
session.saveOrUpdate(obj_3);
session.flush();
tx.commit();
}
catch()
{
tx.rollback()
}
finally
{
session.close();
}
由于 重复条目 错误, saveOrUpdate(obj_1)的第一次调用将失败。但是,在 session.flush()结束时访问数据库之前,实际上不会发生此错误。
有没有办法让这种错误提前发生并给我更多机会正确处理它?
我也不想将事务削减得太小,因为它很难回滚。
我的Hibernate实体与现有的数据库架构相反。
我在配置文件中禁用了缓存:
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hibernate.cache.use_query_cache">false</property>
修改
我的问题是如何尽可能早地得到错误。错误本身并不重要。
现在错误发生在最后,但它确实发生在第一次访问时。
答案 0 :(得分:2)
您可以在每个session.flush()
之后执行session.saveOrUpdate
以强制hibernate执行更新或插入数据库。如果没有flush命令,实际的数据库操作将被延迟,并且只会在结束事务之前立即处理。
这样您就不必更改交易的大小。
答案 1 :(得分:-2)
您可以在每个session.saveOrUpdate之后执行Surendran,强制hibernate执行更新或插入数据库。如果没有flush命令,实际的数据库操作将被延迟,并且只会在结束事务之前立即处理。
这样您就不必更改交易规模。