复合材料中不同 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 A
的 id 是 specialID
。如果是这种情况,那么您可以像这样从默认值更改 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 映射的更多信息
我们有两个域名 类 如下所示
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 A
的 id 是 specialID
。如果是这种情况,那么您可以像这样从默认值更改 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 映射的更多信息