我有一个名为 FoapRequest 的域类。我希望称为“批准者”的属性之一是整数列表。顺序很重要,因此我将http://grails.org/doc/latest/guide/GORM.html#sets,ListsAndMaps描述的类定义为列表:
class FoapRequest {
Integer requester
Integer subject
List approver
static hasMany = [foap:FOAP, newFoap:NewFoap, approver:Integer]
...
只是为了澄清,FOAP 和 NewFoap 是另外两个领域对象。
我需要将此类映射到 Oracle 数据库中的特定表,因此我还指定了一个带有连接表的静态映射:
static mapping = {
table 'OUR_SCHEMA.FOAP_REQUEST_TABLE
id column : 'ID', generator:'sequence', params: [sequence:'OUR_SCHEMA.FOAP_REQUEST_SEQ']
requester column : 'REQUESTER'
subject column : 'SUBJECT'
approver indexColumn: [name: "APPROVER_IDX"], generator:'sequence', params: [sequence:'OUR_SCHEMA.APPROVER_SEQ'],
joinTable: [name:'OUR_SCHEMA.APPROVER_TABLE',
key: 'ASSOCIATED_REQUEST',
column: 'APPROVER_PIDM',
type: "integer"
]
但是,当我尝试创建 FoapRequest 对象的新实例时,出现以下错误:
Invalid column type
控制台显示以下内容:
Error 2012-08-01 12:29:31,619 [http-bio-8080-exec-9] ERROR errors.GrailsExceptionResolver - SQLException occurred when processing request: [POST] /FOAPauth/foapRequest/saveFoapRequests - parameters:
我确信问题出在可连接件上。域模型最初不包括 joinTable——批准者只是一个整数类型(我意识到我需要跟踪多个批准者为时已晚)。
下面是创建 APPROVERS 表的 SQL:
CREATE TABLE "OUR_SCHEMA"."APPROVER_TABLE"
(
"APPROVER_IDX" NUMBER(*,0) NOT NULL ENABLE,
"ASSOCIATED_REQUEST" NUMBER(*,0) NOT NULL ENABLE,
"APPROVER_PIDM" NUMBER(8),
);
如果可能的话,我宁愿避免创建 Approver 域类,因为我真正需要跟踪的是整数标识符。