我有一个抽象Event
类,它包含所有事件类型共享的属性,在它下面我有两个子类,每个类有一个表(MasterEvent
和ParentEvent
)。
问题是MasterEvent
id 列的类型是“number”,而ParentEvent
它的类型是“varchar2”。这意味着当我尝试运行应用程序时,我得到:
由 HibernateException 引起:列 event_id 的 * 列类型错误。找到:数字,预期:varchar2(255 char)。
请注意,这是一个遗留数据库,因此不可能在数据库级别更改列类型。
下面的示例代码应该有助于更好地理解:
事件.groovy
package a
abstract class Event {
String id
static mapping = {
tablePerHierarchy "false"
id column: "id"
}
}
父事件.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 忽略此验证?