1

次の問題があります。Java で JPA/Hibernate によって生成されたデータベース スキーマを取得しました。継承階層用のテーブルが 1 つあります。これを機能させるために、Hibernate は DTYPE 列を使用して、階層内のクラスの具体的な実装を区別します。

次に、同じ階層を GRAILS ドメイン オブジェクトにロードする必要があります。ただし、GRAILS は「クラス」という名前の列を使用して具体的な実装の名前を保存するため、このマッピングを変更する方法を見つけることができませんでした。だから私の質問は: GRAILS の「クラス」列を Hibernate の DTYPE 列にマップする方法はありますか?

4

2 に答える 2

3

基本クラスmappingクロージャの識別子列に使用される名前をカスタマイズできます。

class TopOfTheHierarchy {
  …
  static mapping = {
    discriminator column: "DTYPE"
  }
}

クラス名以外のものを識別子のとして使用するには、各サブクラスに同様のマッピング エントリを使用します。

class ChildClass {
  …
  static mapping = {
    discriminator "child"
  }
}
于 2012-12-15T15:01:37.153 に答える
0

すでに DB スキーマがある場合は、Grails データベース リバース エンジニアリング プラグインを使用して、スキーマから Grails ドメイン クラスを生成してみてください。

于 2012-12-15T14:36:18.607 に答える