您好我正在尝试使用外键约束创建一个域类到另一个现有的域类 新的域类是ArEntitlement,定义如下
package ars
import gra.Resources
class ArEntitlement {
long id
String entitlementname
String entitlementdesc
String entitlementcomm
Integer departmentid
Resources resource
Integer version
static belongsto =[resource : Resources]
static mapping={
table 'ar_entitlement'
id(generator:'increment')
column{
id(column:'id')
}
}
}
资源域类定义如下(之前创建)
package gra
import com.gra.transaction.UserTransaction
class Resources {
Long id=1
String resourceName
Double resourceType
String resourceOwner
Double riskScore
Integer decommissioned
String resourceClass
Long resourceSegment
String targetIp
String resCriticality
Long resourceGroup
Integer disabled
static hasMany=[userTransactions:UserTransaction]
static mapping = {
table 'resource'
version false
id(generator:'increment')
column{
id(column:'id') }
}
static constraints=
{
resourceName(nullable:true,blank:false)
resourceType(nullable:true,blank:false)
resourceOwner(nullable:true,blank:false)
riskScore(nullable:false,blank:false)
decommissioned(nullable:false,blank:false)
resourceClass(nullable:false,blank:false)
resourceSegment(nullable:false,blank:false)
targetIp(nullable:false,blank:false)
resCriticality(nullable:true,blank:false)
resourceGroup(nullable:false,blank:false)
disabled(nullable:false,blank:false)
}
}
创建的结果表没有ar_entitlement表到资源表的外键映射,它确实创建了一个名为“resource_id”但没有外键约束的列。 我需要它指向资源表的id列
我尝试了几个选项,没有belongssto说明符,使用hasOne(在两个域类中)但没有获得所需的外键关系。
任何想法这里的问题是什么?
我得到的日志错误是
2011-12-21 19:50:17,258 [main] ERROR hbm2ddl.SchemaUpdate - Unsuccessful: alter table ar_entitlement add index FKDCD6161FEFD54E5E (resourceid_id), add constraint FKDCD6161FEFD54E5E foreign key (resourceid_id) references resource (id)
答案 0 :(得分:1)
从ArEntitlement中删除“资源资源”行。
static belongsTo = [resource : Resources]
应该涵盖并且定义两次可能是问题。此外,您不需要指定表名,id生成器或id列,因为您使用的是GORM默认值。尝试删除这些。
以下是修改后的代码......
package ars
import gra.Resources
class ArEntitlement {
String entitlementname
String entitlementdesc
String entitlementcomm
Integer departmentid
Integer version
static belongsTo = [resource : Resources]
static mapping = {
}
}