我在用hibernate 在对一个表做修改时老是出错,一直也查不出来,郁闷得不行,这个表在数据库中有父表也有子表,如果子表中没有数据时可以顺利修改,但子表有数据时怎么也修改不了。希望坛子里的大侠们能帮帮我,在线等……我大体思路是:每次更新之前先根据id retrieve 出来一个vo,然后把各个参数set进去,此时我需要验证修改后的信息是否跟表中其他的信息重复,所以利用这个vo 再做一次查询操作,如果我在不修改任何参数直接点“修改”可以通过,只要我改其中任何一个参数点“修改”后就出错,出错的地方就是那个验证的查询函数。错误信息是:15:35:33,422 [com.icss.mdm.maintain.structure.StructureUpdateServlet.performTask(StructureUpdateServlet.java:129)] - java.lang.Exception: 查询数据库出错...org.hibernate.AssertionFailure: collection was not processed by flush()
java.lang.Exception: 查询数据库出错...org.hibernate.AssertionFailure: collection was not processed by flush()
at com.icss.mdm.common.structure.StructureFactory.codeIsUnique(StructureFactory.java:387)
at com.icss.mdm.maintain.structure.StructureUpdateServlet.performTask(StructureUpdateServlet.java:115)原代码是:try{
HibernateUtil.beginTransaction();
MdmCodeVO codeVo = (MdmCodeVO)opm.retrieveObj(MdmCodeVO.class, code_id);
codeVo.setCodeEnname(code_enName);
codeVo.getType().getId();
codeVo.setCodeCnname(code_cnName);
codeVo.setCodeTabname(code_tabName);
codeVo.setOrderNum(Integer.valueOf(code_order == null || code_order.equals("") ? "0" : code_order));
codeVo.setCodeRange(code_range);
codeVo.setRefStand(code_standard);
codeVo.setCatFund(code_fund);
codeVo.setOtherInfo(code_info);
codeVo.setCodingMeth(code_method);
codeVo.setOtherInfo(code_info); opm.updateObj(codeVo);
} catch(Exception e){
HibernateUtil.rollbackTransaction();
log.error(e);
request.setAttribute("CustomErr", "更新代码表时出错!");
forward(request, response, WINDOWINIFRAME_ERROR_PAGE_URL);
}
恳求各位帮我指点一下,困绕了我N久了!!
我没多少分了,都拿出来了!!
java.lang.Exception: 查询数据库出错...org.hibernate.AssertionFailure: collection was not processed by flush()
at com.icss.mdm.common.structure.StructureFactory.codeIsUnique(StructureFactory.java:387)
at com.icss.mdm.maintain.structure.StructureUpdateServlet.performTask(StructureUpdateServlet.java:115)原代码是:try{
HibernateUtil.beginTransaction();
MdmCodeVO codeVo = (MdmCodeVO)opm.retrieveObj(MdmCodeVO.class, code_id);
codeVo.setCodeEnname(code_enName);
codeVo.getType().getId();
codeVo.setCodeCnname(code_cnName);
codeVo.setCodeTabname(code_tabName);
codeVo.setOrderNum(Integer.valueOf(code_order == null || code_order.equals("") ? "0" : code_order));
codeVo.setCodeRange(code_range);
codeVo.setRefStand(code_standard);
codeVo.setCatFund(code_fund);
codeVo.setOtherInfo(code_info);
codeVo.setCodingMeth(code_method);
codeVo.setOtherInfo(code_info); opm.updateObj(codeVo);
} catch(Exception e){
HibernateUtil.rollbackTransaction();
log.error(e);
request.setAttribute("CustomErr", "更新代码表时出错!");
forward(request, response, WINDOWINIFRAME_ERROR_PAGE_URL);
}
恳求各位帮我指点一下,困绕了我N久了!!
我没多少分了,都拿出来了!!
提示的错误正是没有刷新缓存
catch里加rollback
finally加close