【问题标题】:"Different objects with the same identifiers" error“具有相同标识符的不同对象”错误
【发布时间】:2012-08-23 12:33:11
【问题描述】:

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

我有几个疑问:

  • 我很确定我不会使用相同的 ide 复制或创建新对象 标识符。当我使用 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)

提前致谢。

【问题讨论】:

  • @EJP 我已经发布了堆栈跟踪。异常涉及我从数据库中获取的对象“Adminsitrador”,我尝试更新,因为我修改了链接到“Publicidad”对象的属性
  • 好吧,这是一个 Hibernate 问题,与 RMI 无关,所以我正在调整你的标签。
  • 能否请您发布您的管理员对象的休眠映射。

标签: java hibernate


【解决方案1】:

如果您正在做一些事情,例如从 RMI 方法返回一个休眠对象,然后将其传递回另一个,那么您可能需要将该对象重新附加到会话。 (见What is the proper way to re-attach detached objects in Hibernate?)。

如果这没有帮助,也许可以提供更多关于您正在尝试的信息。

【讨论】:

    猜你喜欢
    • 2020-08-22
    • 2020-08-03
    • 1970-01-01
    • 2018-02-13
    • 2013-04-21
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多