5

異なるドメイン クラス間の関連付けだけでなく、GORM は基本的なコレクション型のマッピングもサポートしています。. たとえば、次のクラスは、文字列インスタンスのセットであるニックネームの関連付けを作成します。

class Person {
    static hasMany = [nicknames:String]
}

これにより、ニックネームが別のテーブルに保存されますperson_nicknames

---------------------------------------------
| person_id         |     nickname          |
---------------------------------------------
|   1               |      Fred             |
---------------------------------------------

デフォルトでは、両方の列が null 可能であり、インデックスは存在しません。以下の変更を加えたいと思います

  • 両方の列を null にしない
  • 複合一意インデックスを配置する(person_id, nickname)

もちろん、SQL スクリプトを実行してこれらの変更を行うこともできますが、これをドメイン モデルで表現して、スキーマの作成および更新時に GORM が実行できるようにすることは可能でしょうか?

4

2 に答える 2

0

いいえ、これは現在不可能です。Nickname を明示的なドメイン クラスにすることで偽造できます (Andre Steinggress が質問のコメントで例を示しています)。それ以外の場合は、移行を作成する必要があります。

于 2013-02-21T15:32:34.723 に答える
0

joinTable と基本的なコレクション型を使用できます。

http://grails.org/doc/2.4.3/ref/Database%20Mapping/joinTable.html

列マッピングを使用して SQL の動作を指定できます。

http://grails.org/doc/2.4.3/ref/Database%20Mapping/column.html

于 2014-10-22T14:46:18.343 に答える