【发布时间】:2014-08-05 21:06:50
【问题描述】:
我有一个带有休眠自定义用户类型的枚举:
enum Program { ABC(1000), XYZ(1001); final long code; ... }
class ProgramUserType implements org.hibernate.usertype.UserType { ... }
ProgramUserType 存储枚举的代码(1000、1001 等),并在从数据库读取时通过代码获取枚举实例。
这已成功用于域类中的关系:
class MyDomainOne {
Program program
...
static mapping = {
...
program column: 'PROGRAM_ID', type: ProgramUserType
...
}
}
所以,上述所有工作都很好。
但我想在 hasMany 关系中使用枚举:
class MyDomainTwo {
...
static hasMany = [
programs: Program
]
...
static mapping = {
...
programs joinTable: [name: 'BLAH_DOM_TWO_PROGS', key: 'DOM_TWO_ID', column: 'PROGRAM_ID']
...
}
}
我的问题是总是产生一个“varchar2(255 char)”类型的列:
BLAH_DOM_TWO_PROGS (DOM_TWO_ID number(19,0) not null, PROGRAM_ID varchar2(255 char));
我尝试了各种方法都无济于事:
programs joinTable: [name: 'BLAH_DOM_TWO_PROGS', key: 'DOM_TWO_ID', column: 'PROGRAM_ID', type: ProgramUserType]
programs joinTable: [name: 'BLAH_DOM_TWO_PROGS', key: 'DOM_TWO_ID', column: 'PROGRAM_ID', type: ProgramUserType, sqlType: 'NUMBER(10,0)']
programs type: ProgramUserType, joinTable: [...]
等等
在连接表映射中使用自定义用户类型的正确语法是什么?
(我使用的是 grails 2.3.7)
【问题讨论】:
标签: hibernate grails grails-orm