gpt4 book ai didi

hibernate - 共享 ID 的 Grails 一对一映射

转载 作者:行者123 更新时间:2023-12-02 14:23:53 25 4
gpt4 key购买 nike

我在 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: falsebiomapping堵塞。如果我想更新和/或插入 Bio 实例怎么办?有没有更好的方法让我这样做并分享 pidm列作为 Person 类的 id 并作为对 Bio 的引用?

最佳答案

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

  • 使用 国外ID生成器 .
  • 引入hasOne/belongTo双向关系
  • 您还需要确保任何链接的元素属性都不可插入或不可更新。

  • 举个具体的例子

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

    其他引用资料
  • http://grails.org/doc/2.3.9/ref/Database%20Mapping/insertable.html
  • http://grails.org/doc/2.3.9/ref/Database%20Mapping/updateable.html
  • http://grails.org/doc/latest/ref/Database%20Mapping/id.html
  • 关于hibernate - 共享 ID 的 Grails 一对一映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789171/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com