我在尝试映射复合外键时遇到org.hibernate.MappingException,该复合外键的字段也是Grails 2.0.0中主键的一部分。这就是我所拥有的:
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列:START_DATE(应使用insert =“false”update =“false”映射)
如果我从ClassB中的复合主键中删除'startDate',那么我不会得到异常。但是,这不是我可以使用的解决方案,因为我正在处理一个我无法改变的架构。
有什么想法吗?
感谢Grails论坛,我解决了这个问题。