“具有相同标识符的不同对象”错误

时间:2012-08-28 23:05:06

标签: java hibernate

我正在Java项目中使用RMI + Hibernate,我遇到了与NotUniqueException相关的问题,错误是“具有相同标识符的不同对象”。

我有几个疑问:

  • 我很遗憾,我不会复制或创建具有相同ide的新对象 ntifiers。当我使用它时,RMI是否可能从另一个创建一个新对象?

  • 哪种方法使用Hibernate知道两个对象是一样的?等于?

  • 我知道Serializable与Hibernate有关,但我不知道以什么方式?

  • 如何同时使用RMI解决“差异对象错误”?

  • 每次使用删除或保存对象之前使用合并是否正确?

堆栈跟踪是:

org.orm.PersistentException: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [dcl.Administrador#10]
    at org.orm.PersistentSession.saveOrUpdate(PersistentSession.java:648)
    at org.orm.PersistentManager.saveObject(PersistentManager.java:274)
    at dcl.AdministradorDAO.save(AdministradorDAO.java:240)
    at dcl.BdAdministrador.guardarAdministrador(BdAdministrador.java:62)
    at dcl.BdAdministrador.actualizarAdministrador(BdAdministrador.java:109)
    at dcl.BdPrincipal.actualizarAdministrador(BdPrincipal.java:555)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果你正在做一些事情,比如从RMI方法返回一个hibernate对象,然后将它传回另一个,那么你可能需要将对象重新连接到会话。 (见What is the proper way to re-attach detached objects in Hibernate?)。

如果没有帮助,或许可以提供一些关于你正在尝试的内容的更多信息。