コントローラーでドメイン オブジェクトを作成し、 を呼び出さない場合.save()
、Grails はある時点で自動的にそれを行います。すべてを保存する計画を立てずに多数のドメイン オブジェクトを作成しており、サービスの終了時に「保存されていない一時的なインスタンスを参照しています」という例外が発生します。
コントローラー/サービスの終了時に Grails が保存しようとするすべてのオブジェクトのリストを取得して、それらの一部が保存されないようにするにはどうすればよいですか?
コントローラーでドメイン オブジェクトを作成し、 を呼び出さない場合.save()
、Grails はある時点で自動的にそれを行います。すべてを保存する計画を立てずに多数のドメイン オブジェクトを作成しており、サービスの終了時に「保存されていない一時的なインスタンスを参照しています」という例外が発生します。
コントローラー/サービスの終了時に Grails が保存しようとするすべてのオブジェクトのリストを取得して、それらの一部が保存されないようにするにはどうすればよいですか?
read
編集することがわかっているが、の代わりにメソッドで永続化したくないインスタンスを取得することをお勧めしますget
。呼び出して変更された場合は永続化されますが、OSIV インターセプターがセッションをフラッシュすると自動永続化されないため、を使用read
しても読み取り専用にはなりません。save()
別のオプション (特にインスタンスが個別にロードされていない場合) は、detach()
編集中に を使用してセッションからインスタンスを削除することです。
DTO を使用してデータを非永続クラスにコピーすることもできるので、永続クラスをいじることはなく、Hibernate が知らないデータ クラスだけを扱うことができます。