Mysql 在Grails2.0.0中映射复合外键
在尝试映射一个复合外键时,我遇到了org.hibernate.MappingException,该外键的字段也是Grails2.0.0中主键的一部分。以下是我所拥有的:Mysql 在Grails2.0.0中映射复合外键,mysql,hibernate,grails,gorm,Mysql,Hibernate,Grails,Gorm,在尝试映射一个复合外键时,我遇到了org.hibernate.MappingException,该外键的字段也是Grails2.0.0中主键的一部分。以下是我所拥有的: class ClassA { static hasMany =[classB: ClassB] static mapping = { id composite: ['classAId', 'startDate'] classAId column: 'A_ID' startDate column:
class ClassA {
static hasMany =[classB: ClassB]
static mapping = {
id composite: ['classAId', 'startDate']
classAId column: 'A_ID'
startDate column: 'START_DATE'
}
Integer classAId
Date startDate
}
class ClassB {
static belongsTo = [ClassA]
static mapping = {
id composite:['startDate', 'classBId']
columns {
startDate: 'START_DATE', insertable: false, updateable: false
classBId: 'B_ID'
classA: { // composite FK
column:'A_ID'
column:'START_DATE' // adding 'insertable: false, updateable: false' doesn't work here
}
}
}
String classBId
Date startDate
ClassA classA
}
我得到的例外是
…嵌套异常为org.hibernate.MappingException:实体映射中的重复列:ClassB列:开始日期应映射为insert=false update=false
如果我从ClassB中的复合主键中删除“startDate”,那么我不会得到异常。但是,这不是我可以使用的解决方案,因为我正在处理一个无法更改的模式
有什么想法吗
多亏了Grails论坛,我找到了解决这个问题的方法