ホームページ > Java > &#&チュートリアル > Hibernate の「オブジェクトは保存されていない一時インスタンスを参照しています」エラーを解決するにはどうすればよいですか?

Hibernate の「オブジェクトは保存されていない一時インスタンスを参照しています」エラーを解決するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-13 01:56:10
オリジナル
677 人が閲覧しました

How to Resolve Hibernate's

エラーが発生しました: Hibernate "オブジェクトが保存されていない一時インスタンスを参照しています - フラッシュする前に一時インスタンスを保存してください"

を使用してオブジェクトを保存しようとしているときに、休止状態にすると、次のような問題が発生する可能性がありますエラー:

object references an unsaved transient instance - save the transient instance before flushing
ログイン後にコピー

問題の理解:

このエラーは、オブジェクトにエンティティである未保存の一時インスタンスのコレクションが含まれている状況を Hibernate が検出したことを示します。まだデータベースに保存されていないもの。未保存のコレクションを持つエンティティを保存しようとすると、Hibernate はそのコレクション内の一時インスタンスがすでに保存されているものと想定します。

解決策:

このエラーを解決するにはの場合、親エンティティを保存するときに一時インスタンスをカスケード (保存) するように Hibernate に指示する必要があります。これは、XML マッピングに cascade="all" 属性を追加するか、アノテーションの場合は cascade=CascadeType.ALL アノテーションを追加することで実現できます。

XML の例:

<class name="com.entity.Parent">
    <collection name="children" cascade="all">
        <many-to-one name="child" />
    </collection>
</class>
ログイン後にコピー

の例注釈:

@Entity
public class Parent {
    @OneToMany(cascade = CascadeType.ALL)
    private List<Child> children;
}
ログイン後にコピー

cascade="all" または cascade=CascadeType.ALL を指定すると、親エンティティを保存するときに、そのすべての子エンティティも自動的に保存する必要があることが Hibernate に通知されます。以前にデータベースに保存されていない場合でも。これにより、関係内のすべてのオブジェクトが適切に永続化されます。

この修正を実装すると、未保存の一時インスタンスのコレクションを含むオブジェクトを正常に保存でき、「オブジェクトが未保存の一時インスタンスを参照している - 前に一時インスタンスを保存する」という問題を回避できます。 Hibernate での「フラッシュ」エラー。

以上がHibernate の「オブジェクトは保存されていない一時インスタンスを参照しています」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート