Отображение составных внешних ключей в Grails 2.0.0 - PullRequest
2 голосов
/ 16 февраля 2012

Я получаю исключение 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

...