5

次のgrailsドメインクラス:

class MyClass {
  Map myMap
}

myMapの場合、grailsはマップ内の要素の新しいテーブルを自動的に作成します。ただし、長すぎる要素(1024文字など)を追加すると、DBエラーが発生します。

どういうわけか、myMapのテーブルのそれぞれの列をより大きな文字列を許可するのに十分な大きさにするようにgrailsに指示できますか、それともDBで手動でこれを行う必要がありますか?

私はすでに試しました

static constraints = {
  myMap(maxSize:1024)
}

これは機能しません(maxSizeはマップ自体ではなく、マップの値を参照する必要があるため、予想どおり)。

制約を介さない場合は、おそらくそれを行う方法があります

static mapping { ... }

4

2 に答える 2

5

私がうまく使用した別のアプローチは、マップをコラボレータードメインクラスのコレクションにプッシュすることでした。

class DynaProperty {
    String name
    String value

    static belongsTo = MyClass
    static constraints = {
        value(maxSize:4000)  //Or whatever number is appropriate
    }
}

そして、MyClassでは:

class MyClass {
    static hasMany = [dynaProperties:DynaProperty]
}

これはほとんどマップであり、動的ファインダーを使用して個々のエントリをプルアップする機能を提供します。

于 2010-07-13T19:14:16.943 に答える
0

何を達成しようとしていますか?マップには常に同じ数のものがありますか?ある場合は、クラスでそれらのプロパティを定義する必要があります。

現在のアプローチの問題を確認できます。実行時までマップに何が含まれているのかを把握する方法がないため、grailsはどのようにしてその列を作成できるのでしょうか。そもそもうまくいったのには驚きました...

于 2010-07-13T14:06:39.823 に答える