0
我面臨着一個非常奇怪的情況。我使用spring 3.0.5的hibernate模板進行數據庫操作。當我第一次嘗試插入用戶模型時,會引發DataAccessException,我會捕獲它。現在我想重試相同的數據庫操作說3次。第二次,它不會拋出異常。Spring彈出後重試DataAccessException不起作用
下面是代碼:
package com.user.profile.dao;
@Repository("userProfileDAOImpl")
public class UserProfileDAOImpl implements IUserProfileDAO {
@Autowired
private HibernateTemplate hibernateTemplate;
public Long insertUserProfileData(User user) throws AppNonFatalException {
Long id = null;
int retryCount = 0;
while (retryCount < 3) {
try {
id = (Long)hibernateTemplate.save(user);
}
catch (DataAccessException e) {
e.printStackTrace();
retryCount++;
System.out.println("Retry Count = " + retryCount);
if (retryCount > 3) {
throw new AppNonFatalException(e.getLocalizedMessage(), "10000", e.getMessage(), e);
}
}
catch (Exception e) {
/* not coming inside this block too second time onwards */
System.out.println("Pure Exception");
}
}
return id;
}
}
,我讀了RuntimeExceptions不應該被抓住。那麼我該如何重試該操作。我應該在服務層重試嗎?我錯過了什麼嗎?任何幫助表示讚賞。
也許你在你的映射中有錯誤,或者連接失敗等。如果你發佈異常的堆棧跟蹤,我可能會給你一個更準確的建議。 – arturo 2010-11-29 15:59:05