对于DAO中add方法抛出ObjectAlreadyExistException异常的处理办法:
1、如果是因为主键冲突而需要抛出ObjectAlreadyExistException就直接执行executeUpdate方法,然后在catch(SQLException e)中根据e.getErrorCode()的返回值判断是否要抛出ObjectAlreadyExistException,此处为DB2,则判断“-803”,此变量在com.cvicse.pub.common.CommonArgument中。
2、如果是因为业务原因要控制非主键不能重复,那就必须在add方法中调用相应的方法查询,根据查询的结果抛出ObjectAlreadyExistException异常
注意:add方法不能根据executeUpdate方法的返回值是0,来抛出ObjectAlreadyExistException异常,故相关的if判断去掉。
示例代码:(红色字去掉不要)
try {
String addSql = "";
Connection conn = DBDataSource.getNwwConnect();
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(addSql);
if (count == 0) { // 如果对象已经存在
throw new ObjectAlreadyExistException(
"articlefeePO identified by " + articlefeePO.getId() + " has already existed");
}
} catch (SQLException sqlEx) {
if(sqlEx.getErrorCode() ==CommonArgument.ALREADYEXIST_CODE){
throw new ObjectAlreadyExistException(sqlEx);
}
throw new DataAccessException(sqlEx);
}