Tob*_*bia 4 spring hibernate transactions
我有一个使用此方法的代码块:
@Transactional(noRollbackFor=Exception.class)
public synchronized Object saveData(){
//...
dao.insert(entity);
//...
}
Run Code Online (Sandbox Code Playgroud)
我的 dao 类被标记为 ad Transactional
@Transactional
public class Dao {
//...
public <T> void insert(T obj) throws Exception {
getSession().saveOrUpdate(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要防止该块内发生任何回滚。然而我得到了这个:
2014-02-25 20:47:44 [WARN]SqlExceptionHelper:143 SQL Error: 1205, SQLState: 41000
2014-02-25 20:47:44 [ERROR]SqlExceptionHelper:144 Lock wait timeout exceeded; try restarting transaction
2014-02-25 20:47:44 [ERROR]BigliettiService:? Transazione in errore
org.hibernate.exception.GenericJDBCException: Lock wait timeout exceeded; try restarting transaction
...
2014-02-25 20:47:44 [ERROR]JsonHandlerExceptionResolver:? Transaction rolled back because it has been marked as rollback-only
Run Code Online (Sandbox Code Playgroud)
为什么最后我发现事务回滚了?
上周我也遇到了类似的问题。就我而言,是@Transactional来自不同方法的另一个注释导致事务被标记为仅回滚。
你检查过了吗?
编辑:为了更清楚地说明这一点,您没有从saveData()方法内部发布代码。对我来说导致此错误的原因是从我的方法内部调用另一个方法@Transactional(缺少属性),在您的情况下。noRollbacksaveData()
| 归档时间: |
|
| 查看次数: |
4786 次 |
| 最近记录: |