hibernate - 复合类中不同 FK 的 Grails GORM 关联

标签 hibernate grails elasticsearch grails-orm grails-plugin

我们有两个域类,如下所示

 package com.x.y.z;
 Class A {
    String name
    String status
    String specialID


 static mapping = {
    id type:Long, sqlType:'INT'
 }

 }

  package com.x.y.z;
  Class B {
     A a
     String name

  }

现在,当我们启动服务器并且表中的数据开始在批量加载时在 Elastic 中建立索引时,我们会收到错误消息

由 ObjectNotFoundException 引起:不存在具有给定标识符的行:[com.x.y.z.A#300]

消息:无法编码域实例 [com.x.y.z.B : 675]

可能发生的是当编码 B 时,对象正在 A.id 中搜索 FK,而它实际上应该在查看 A.specialID。我能够在 DB 中查找 specialID 300,而表 A 的 ID 中没有 300。我们希望 B 的实例查找 A.specialID 而不是默认的 A.id。这可能吗?我们没有使用 hasOne 映射,因为在这种情况下双向映射不合适。感谢任何有关映射的帮助。

最佳答案

我假设域类的 id AspecialID .如果是这种情况,那么您可以像这样更改默认值的 id 属性:

 Class A {
    ...  

    static mapping = {
        id type:Long, sqlType:'INT', name: 'specialID'
    }    
 }

我不确定表 a 的主键是什么,但假设它是... foo ,那么您可以像这样设置列:
 Class A {
    ...  

    static mapping = {
        id type:Long, sqlType:'INT', name: 'specialID', column: 'foo'
    }    
 }

您可以在 Grails documentation 中阅读有关 id 映射的更多信息。 .

关于hibernate - 复合类中不同 FK 的 Grails GORM 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33767795/

相关文章:

java - 随机 JVM 崩溃,堆栈仅显示 Hibernate 数据

elasticsearch - 带有multi_field的elasticsearch index_name

grails - Spring Security 登录页面 UI 问题

grails - 如何更新 grails 域对象列表上的属性?

grails - 在Grails中向客户端渲染响应后如何执行代码?

ruby-on-rails - Rails 4链接以使用Elasticsearch搜索

elasticsearch - 如何使用CURL将CSV上传到AWS Elasticsearch?

java - Hibernate如何使用外键向表添加新行

hibernate - 自定义 EntityNotFoundDelegate

java - IntelliJ : Cannot resolve symbol 'GenericGenerator'