Session session = null;
Transaction transaction = null;
PreparedStatement pstmt = null;
Statement stmt = null;
ResultSet resultSet = null;
try{
session = HibernateSessionFactory.getSession();
transaction = session.beginTransaction();
//添加Bug信息
String projectCode = info.getProject().getProjectCode();
String bugPrefix = projectCode + "_" + ResBundle.getString("bug.prefix") + "_";
String sql =
"insert into bug_record(bug_id,bug_code,discription,finder,charger,find_time,project_id,/n" +
"bug_level_id,bug_resource_id,origin_source_id,bug_status_id,create_id,create_time,update_id,/n" +
"update_time,project_module_id,latest_finished_time,fact_finished_time,estimate_duration,customer_id,/n" +
"origin_solution,final_solution,relate_projects,time_unit_id,presenter_flag,charger_flag,remark1,remark2,remark3,/n" +
"remark4,apply_range_id,version_id) VALUES(SEQUENCE_DMS.nextval," +
"(select '" + bugPrefix + "' || to_char(to_number(substr(code,instr(code,'_')+1))+1) a " +
"from (/n" +
" select substr(BUG_CODE,instr(BUG_CODE,'_')+1) code from Bug_Record where BUG_ID=(/n" +
" select max(bug.BUG_ID)/n" +
" from Bug_Record bug/n" +
" where bug.BUG_CODE like '" + bugPrefix + "%'))),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
List lstParam = new ArrayList();
lstParam.add(info.getDiscription()); //from 第1 0==i
//设置其他参数
。。。
0==iinfo.getApplyRange().getCodingSetId());
lstParam.add(info.getVersion().getVersionId());
Object[] values = lstParam.toArray();
//添加bug信息
Connection con = session.connection();
pstmt = con.prepareStatement(sql);
// set prepare
this.fillStatementAddBug(pstmt, values);
pstmt.executeUpdate();
String bugIdSql = "select SEQUENCE_DMS.currval from bug_record" ;
stmt = con.createStatement();
resultSet = stmt.executeQuery(bugIdSql);
if(resultSet.next()){
info.setBugId(new Long(String.valueOf(resultSet.getObject(1))));
}
//操作其他关联表
。。。
transaction.commit();
=============
//fill PreparedStatement object for add bug
private void fillStatementAddBug(PreparedStatement stmt, Object params[]) throws CustomException {
try {
if (params == null)
return;
for (int i = 0; i < params.length; i++) {
if (params[i] != null) {
if(params[i].getClass().isAssignableFrom(java.util.Date.class)){
stmt.setDate(i + 1, new java.sql.Date(((java.util.Date)params[i]).getTime()));
}
else{
stmt.setObject(i + 1, params[i]);
}
} else {
if(14 == i || 15==i){
stmt.setNull(i + 1, Types.DATE);
}
else{
stmt.setNull(i + 1, Types.NUMERIC);
}
}
}
} catch (SQLException e) {
sysLogger.error(e.getMessage());
throw new CustomException(e, "msg_BaseHibernateDAO_001");
}
}