经朋友点拨,已经解决。
没人回答我就自己来了,也供游人参考:
一开始session.update(Object o)出现这样的问题,但是通过使用session.merge(Object o)解决了,因为merge()会判断session pool中是否有同样的对象,有则update(),没有则seve()。
但后来发现session.delete(Object o)也出现同样的问题。没办法,只能找根本原因。最后发现啊extends Action的时候我new了一个需要更新的Object,然后用ActionForm里的值赋值。这样一来,提供给hibernate更新的对象和你本来想要更新的对象属于不同对象,但却有相同的标识。因此hibernate抛出NonUniqueObjectException。
解决方法是,通过ActionForm里的标识,find真正要更新的对象,然后用ActionForm里的值替换该对象的值。
再执行update()或delete();问题就解决了。
没人回答我就自己来了,也供游人参考:
一开始session.update(Object o)出现这样的问题,但是通过使用session.merge(Object o)解决了,因为merge()会判断session pool中是否有同样的对象,有则update(),没有则seve()。
但后来发现session.delete(Object o)也出现同样的问题。没办法,只能找根本原因。最后发现啊extends Action的时候我new了一个需要更新的Object,然后用ActionForm里的值赋值。这样一来,提供给hibernate更新的对象和你本来想要更新的对象属于不同对象,但却有相同的标识。因此hibernate抛出NonUniqueObjectException。
解决方法是,通过ActionForm里的标识,find真正要更新的对象,然后用ActionForm里的值替换该对象的值。
再执行update()或delete();问题就解决了。
解决方案 »
- 关于getHibernateTemplate()方法的疑惑和不解
- action 跳转的怪异问题
- 使用JS弹出页面
- 使用 oc4j部署ejb2.0的问题
- Hibernate 用 createSQLQuery 执行 sql语句问题
- spring中用quartz问题 急!!!!!
- 如何做一个时间可控制的定时任务
- 天哪,倒底有没有人可以帮我解决一下啊!?100分
- JSP及Struts开发工具:JSPStudio下载:ftp://210.36.70.51
- deploytool
- 在jsp中如何将数据库表中的一个字段读出来并添加到下拉列表框中(求一段代码)
- javamail发送邮件时,自己的邮箱(163.com,qq.com)证明会失败.为什么?
merge报另一个错误
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1