在Grails 2.0.0中映射复合外键

时间:2012-02-16 17:00:17

标签: mysql hibernate grails gorm

我在尝试映射复合外键时遇到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论坛,我解决了这个问题。

http://grails.1312388.n4.nabble.com/Issue-mapping-composite-keys-in-grails-2-0-0-td4397125.html#a4397190

0 个答案:

没有答案