2

こんにちは、以下はすべて、抽象クラスAbstractProfileと1つの具象クラスGoogleProfileがある状況です。

abstract class AbstractProfile  {
    .....
}

class GoogleProfile extends AbstractProfile { 

    ......
}

私はgrailsを使用していますが、gormはgoogleプロファイルのテーブルを挿入していません現在のgormはAbstractProfileクラスのテーブルのみを挿入しています助けてくださいよろしくお願いします

4

4 に答える 4

3

掘り下げてみたところ、grails 2.3以降では次のマッピング オプションがあることがわかりました。

tablePerConcreteClass true

ドキュメント (バージョン2.4の場合でも) は、これに関してまだ更新されていないようです。

于 2014-07-03T19:06:22.107 に答える
0

Grails 2.0 は抽象クラスを永続化します。拡張クラスに対して個々のテーブルを有効にするには、次を指定する必要があります。

static mapping = {
        tablePerHierarchy       false
}

抽象クラスに。そうしないと、階層全体が同じテーブルに「存在」します。

于 2012-08-03T06:52:17.560 に答える
0

Михаил の素晴らしい回答に続いて、2 つの別々のことがうまくいきました。

  1. ベース ドメイン クラスを src に配置する

基本クラスとサブクラスの両方の制約が適用されたため、これは私にとって最もうまくいきました。私のユースケースでは、サブクラスに null 列がないことが重要でした。ただし、サブクラスのマッピング ブロックのみが使用されているようです。

  1. 使用するtablePerConcreteClass true

ここでの利点は、インデックスを BaseDomain クラスで宣言し、各サブクラス テーブルに表示できることです。つまり、基本クラスとサブクラスの両方のマッピング ブロックが使用されます。基本クラスの制約のみが使用されているようです。

abstract class BaseDomain {
    static mapping = {
        tablePerHierarchy false  // avoid creating the base_domain table
        tablePerConcreteClass true
        id generator: 'increment' // https://jira.grails.org/browse/GRAILS-10849
        someColumnInBaseDomain index: true  // index this column in each subclass table
    }
}
于 2015-07-07T18:40:44.530 に答える