Я получаю исключение 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")
Если я удалю 'startDate' из составного первичного ключа в ClassB, я не получу исключение.Однако это не решение, которое я могу использовать, потому что я имею дело со схемой, которую я не могу изменить.
Любые идеи?
Благодаря форуму Grails у меня есть обходной путь кэтот выпуск.
http://grails.1312388.n4.nabble.com/Issue-mapping-composite-keys-in-grails-2-0-0-td4397125.html#a4397190