今天在项目里遇到这样一个问题,使用Hibernate进行修改操作saveOrUpdate()或者是update()时出了这样一个错误,即Hibernate更新出错。根据异常信息的字面意思,大致意思是说, 在一个session对象中同时存在着重复的相同标识的却是不同的对象。
我遇到的情况是这样的,客户端进行插入操作,这个时候所插入的这个对象缓存在session中,而用户在插入后又对同一个对象,进行修改操作,那么这个时候,同样标识的一个对象又发送到服务端,那么一个session中就存在了两个标识相同的对象,而对象中的内容却不一样,所以Hibernate会报这个错,同样是Hibernate更新出错。那么针对于这种Hibernate更新出错,该如何解决呢?
应该有许多种方法,这里我用了session.clear()在每次更新操作之前,先把session清空掉。代码如下:
- public int saveOrUpdate(String classPath, Object obj) {
- try {
- getSession().saveOrUpdate(classPath, obj);
- //每次操作之后清空session
- getSession().flush();
- getSession().clear();
- } catch (RuntimeException re) {
- re.printStackTrace();
- }
- }
这只是对我所遇到的Hibernate更新出错问题的解决办法之一,如果哪里说的不正确希望大家批评指正,互相学习。
【编辑推荐】