共享ID的Grails一对一映射

时间:2014-07-16 19:31:54

标签: hibernate grails gorm grails-domain-class

我在Grails 2.3.11 中有以下域类。它们映射到无法更改的旧数据库表。这两个类共享一个名为pidm的ID:

class Person {
    Long pidm
    String firstName
    String middleName
    Bio bio

    static mapping = {
        id name: 'pidm', generator: 'assigned'
        bio column: 'pidm'
    }
}

class Bio {
    Long pidm
    String ssn
    String gender
    Date birthDate

    static mapping = {
        id name: 'pidm', generator: 'assigned'
    }
}

person_id表中没有单独的Bio列或类似的内容。应该通过pidm进行一对一的映射。

目前,我可以将此方法发挥作用的唯一方法是将updateable: false, insertable: false添加到bio块中的mapping。如果我想更新和/或插入Bio实例怎么办?有没有更好的方法让我这样做并分享pidm列作为Person类 AND 的id作为对Bio的引用?

1 个答案:

答案 0 :(得分:2)

您需要在Bio类和相关映射中进行以下更改:

  • 使用外国ID生成器

  • 介绍一个hasOne / belongsTo双向关系

  • 您还需要确保所有链接元素属性都不可插入或可更新。

具体示例

http://blog.swwomm.com/2011/09/grails-foreign-id-generator.html

其他参考