-1

Grails の次のドメイン クラスを検討してください。

enum MyEnum { One, Two, Three }

class MyClass {
    Collection mys = []
    static hasMany = [
        mys: MyEnum
    ]
    static mapping = {
        mys lazy: true
    }
}

Postgres 9.1 データベースで「create-drop」を使用してアプリを実行すると、次のエラーが発生します。

Unsuccessful: create table myclass_mys (myclass_id int8, myenum varchar(-1))
ERROR: syntax error at or near "-"

遅延マッピングを削除すると、エラーは消えます。ただし、怠け者は他の理由で必要です。私の現在の回避策は、遅延マッピングなしでデータベースを作成し、後でドメイン クラスを変更することです。これは、開発コンテキストでは非常に面倒です。

varchar(-1) が通常どおり varchar(255) になるように gorm マッピングを修正する方法についてのアイデアはありますか?

4

1 に答える 1

0

ドメイン クラスで列挙型を使用し、列挙型のマッピングを指定しない場合、テーブルは正常に作成されることに注意してください。ただし、マッピング ブロックで enum プロパティについて言及すると、問題が発生します。次のようなマッピングをプロパティに追加する回避策があります。

sqlType: "varchar(20)"

試してみることはできますが、これが joinTable で機能するかどうかはわかりません。詳細については、このジラの問題をご覧ください: http://jira.grails.org/browse/GRAILS-8444

于 2012-04-20T19:53:31.830 に答える