复合材料中不同 FK 的 Grails GORM 关联 class

Grails GORM association for different FK in a composite class

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

 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

  }

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

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

消息:编组域实例失败 [com.x.y.z.B:675]

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

我假设域 class AidspecialID。如果是这种情况,那么您可以像这样从默认值更改 id 属性:

 Class A {
    ...  

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

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

 Class A {
    ...  

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

您可以在 Grails documentation.

中阅读有关 id 映射的更多信息