4

Java プロジェクトで RMI + Hibernate を使用していますが、「同じ識別子を持つ異なるオブジェクト」というエラーで NotUniqueException に関連する問題が発生しています。

私はいくつかの疑問を持っています:

  • 同じ識別子を持つ新しいオブジェクトをコピーしたり作成したりしないことは確かです。RMI を使用すると、別のオブジェクトから新しいオブジェクトが作成される可能性はありますか?

  • 2 つのオブジェクトが同じであることを知るために Hibernate を使用しているメソッドはどれですか? 等しい?

  • Serializable が Hibernate に関連していることは知っていますが、どのような方法かはわかりません。

  • RMI を同時に使用して「Differents objects エラー」を解決するにはどうすればよいですか?

  • 以前にオブジェクトのマージを使用して削除または保存を使用するたびに正しいですか?

スタック トレースは次のとおりです。

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)

前もって感謝します。

4

1 に答える 1

0

RMIメソッドから休止状態のオブジェクトを返し、それを別のメソッドに戻すようなことをしている場合は、オブジェクトをセッションに再アタッチする必要がある可能性があります。(Hibernateでデタッチされたオブジェクトを再アタッチする適切な方法は何ですか?を参照してください)。

これで問題が解決しない場合は、何をしようとしているのかについて、もう少し情報を提供してください。

于 2012-08-30T21:56:15.423 に答える