Grails 2.1.5 プロジェクト内に既存のドメイン ブックがあるとします。これまで、私は常にこのテーブルから本を削除していました。しかし、今は本を物理的に削除するのではなく、アーカイブしたいと考えています。Book.get/findXX/executeQuery/... または Author.books -> を実行するコードで何も変更する必要がないように、アーカイブされていない本のみを検索します。
したがって、拡張ドメイン クラスを使用すると、(Grails > 2.x 以降) 非常にうまく機能する可能性があると思います。
例えば
class ArchivableBook {
// some properties
static mappings = {table 'book'}
}
class Book extends ArchivableBook {
// ...
}
class HistoricalBook extends ArchivableBook {
// ...
}
(おそらく、HistoricalBook に Book を拡張させるだけでも十分です)
DB レベルでは、Book に Book か HistoricalBook かを識別する列「クラス」があることを知っています。
ここに私の質問があります: 今本をアーカイブする最良の方法は何ですか? どういうわけか、クラス列を新しい値に設定するだけでよいように思えます...しかし、これまでのところ、簡単な方法でそれを行う方法がわかりませんでした。Book を HistoricalBook にキャストして保存することはできますか? または、Book を削除して、同じ ID を持つ HistoricalBook を作成する必要がありますか?