2011-03-24 65 views
1

假设我在服务层中标记了一个方法@Transactional(rollbackFor = PersistenceException.class)并且在该方法中具有如下的catch块。@Transactional回滚对于问题

try{ 
    serverStore.update(persistableObject); 
    } catch (PersistenceException e) { 

} 

我会甚至会发现PersistenceException吗?

我问,因为我守卫的持久性异常是一个间歇性的死锁问题,我不能告诉我是否因为这个改变而没有复制它,或者它不应该显示出来。

回答

3

这取决于你如何刷新会话(实体管理器)。默认情况下,我认为,在事务提交时它会变为flush,所以你将无法捕获方法中的异常。

+0

所以你说catch块会是不必要的代码? – Speck 2011-03-24 22:42:38

+0

是的。 (15chars)。 – Bozho 2011-03-24 22:43:17