2

エラーを永続化するために渡されたこの有名な切り離されたエンティティについて、多くの議論があることを私は知っています。私はそのエラーに遭遇しました。エンティティを適切にリンクしましたが、それは問題ではありませんでした。エンティティを既存のエンティティにリンクしていました。merge()の代わりに試してみましたがpersist()、これはトランザクションをうまく実行しました。そのメソッドについて問い合わせたところ、渡されたオブジェクトの状態をコピーするという要点あちこちmerge()学びました。右。

私の質問は、代わりに

em.persist(e); e.anything();

使用するのは悪い考えですか

e = em.merge(e); e.anything();

?

私がよく理解していれば、状態がマージされたマネージド インスタンスをmerge()返します。これは、返されたエンティティで指定されたエンティティを上書きすると、永続エンティティにアクセスできることを意味するはずですよね?

その「解決策」がどこにも見当たらなかったので、質問しています。質問が重複している場合の測定基準:)

4

1 に答える 1

1

使用するのは悪い考えですかe = em.merge(e); e.anything();

これが悪い考えであるかどうかは、アプリケーションと、マージ前に何をしているか、および で何をしているかによって異なりますanything()

Amergeは、特定のケースで「切り離されたエンティティ」エラーを修正します。それ以外の場合は、アプリケーションを壊しながら、エンティティ マネージャーの要件を満たします。

特定のケースの質問に答えるには、次のことを自問する必要がありますe。何が含まれていますか?他のエンティティとの関係はありますか? もしそうなら、これらの関係は双方向ですか?等...

于 2012-05-10T17:56:09.700 に答える