2

Grails GORM ガイドによると、 tablePerHierarchy が false に設定されていない限り、ドメイン クラスのサブクラスは親クラスと同じテーブルを共有します。

「abstract」キーワードが原因で次のマッピング ステートメントが無視されるかどうかについての情報が見つかりません

abstract class Item implements Comparable{
  static mapping = {
    tablePerHierarchy true
  }
...

私のデータベースには Item テーブルがなく、サブクラスごとに 1 つのテーブルが含まれています (tablePerHierarchy==false の状態が期待されます)。

アイテムを具象化する必要がありますが、検証では許可しませんか? 作成フォームで <select> を使用して選択されたサブクラスを持つ 1 つの ItemController を用意する予定です。

4

1 に答える 1

4

あなたはすでにこれのいくつかの解決策に到達していると確信していますが、私は今日同じ問題に遭遇したので、私はチャイムを鳴らすと思いました。

Grails / Gormのドキュメントのセクション5.2.3には、「GORMは抽象基本クラスと具象永続GORMエンティティの両方からの継承をサポートしている」と記載されています(http://www.grails.org/doc/1.0.x/guide/5 。%20Object%20Relational%20Mapping%20(GORM).html)。

興味深いことに、このセクションの例では、抽象クラスの例は提供されていません。

階層に抽象クラスを入れてみました(両方とも階層の最上位にあり、さらにブランチの1つにあります)。抽象的なもののサブクラスであるオブジェクトを永続化しようとするたびに、サイレントエラーが発生しました。

最初に階層の最上位からabstractキーワードを削除しましたが、より良い結果が得られました。最後に、階層内のすべてのブランチからabstractキーワードを削除しましたが、すべて正常に機能しました。

したがって、私の結論は、実際には、Gorm階層でabstractキーワードを使用できるということは真実ではありません。

したがって、私の計画した階層は、たとえば、いくつかの単純なデータ型の階層でした。抽象型<-具体的なテキスト<-具体的なUrl抽象型<-抽象数値<-具体的な整数抽象型<-抽象数値<-具体的な10進数

なる必要がありました:コンクリートタイプ<-コンクリートテキスト<-コンクリートUrlコンクリートタイプ<-コンクリート数値<-コンクリート一体型コンクリートタイプ<-コンクリート数値<-コンクリート10進数

TypeまたはNumericのインスタンスを直接作成するつもりはありませんが。

開示のために、1.2が十分に安定していると感じるまで、私はまだGrails1.1.2を使用しています。

于 2010-03-05T00:57:48.357 に答える