すべての Event タイプで共有されるプロパティを保持する抽象Event
クラスがあり、その下にはクラスごとに 1 つのテーブルを持つ 2 つのサブクラス (MasterEvent
とParentEvent
) があります。
問題はMasterEvent
、id 列の型が「number」であり、列ParentEvent
の型が「varchar2」であることです。これは、アプリを実行しようとすると、次のようになることを意味します。
HibernateException が原因: 列 event_id の * の列タイプが正しくありません。見つかった: number、予想: varchar2(255 文字)。
これは従来のデータベースであるため、データベース レベルで列の型を変更する可能性がないことに注意してください。
以下のサンプル コードは、理解を深めるのに役立ちます。
Event.groovy
package a
abstract class Event {
String id
static mapping = {
tablePerHierarchy "false"
id column: "id"
}
}
ParentEvent.groovy
package a
class ParentEvent extends Event {
static mapping = {
id column: "id"
}
}
MasterEvent.groovy
package a
class MasterEvent extends Event {
static mapping = {
id column: "id", type: "number"
}
}
type: number
あらゆる種類の組み合わせを試してみましたが、常に同じエラーが発生します。
sqlType
直接キャストするか、String
grails にこの検証を無視させる方法はありますか?