使用休眠将对象保存到数据库时,有时会因为对象中的某些字段超过varchar
数据库中定义的最大长度而失败。
因此我使用以下方法:
- 尝试保存
- 如果得到
DataException
,然后我将对象中的字段截断为 db 定义中指定的最大长度,然后再次尝试保存。
但是,在截断后的第二次保存中,出现以下异常:
hibernate: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails
这是相关的代码,你发现它有什么问题吗?
public static void saveLenientObject(Object obj){
try {
save2(rec);
} catch (org.hibernate.exception.DataException e) {
// TODO Auto-generated catch block
e.printStackTrace();
saveLenientObject(rec, e);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void saveLenientObject(Object rec, DataException e) {
Util.truncateObject(rec);
System.out.println("after truncation ");
save2(rec);
}
public static void save2(Object obj) throws Exception{
try{
beginTransaction();
getSession().save(obj);
commitTransaction();
}catch(Exception e){
e.printStackTrace();
rollbackTransaction();
//closeSession();
throw e;
}finally{
closeSession();
}
}