我在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的引用?
答案 0 :(得分:2)
您需要在Bio类和相关映射中进行以下更改:
使用外国ID生成器。
介绍一个hasOne / belongsTo双向关系
您还需要确保所有链接元素属性都不可插入或可更新。
具体示例
http://blog.swwomm.com/2011/09/grails-foreign-id-generator.html
其他参考