考虑这两个 Grails domain
类:
class Agreement implements Serializable {
String code
String branchCode
...
static belongsTo = [agency: CollectingAgency]
static mapping = {
...
}
}
class CollectingAgency implements Serializable {
String type
String agencyClass
...
static hasMany = [agreement: Agreement]
static mapping = {
...
}
}
现在当我执行
Agreement.findAll()
它创建了一个与此类似的 sql(使用 loggingSql = true
):select agreement0_.agency_id as agency4_67_1_, agreement0_.AGREH_CD as
AGREH1_1_, agreement0_.AGREH_BRCHCD as AGREH2_1_,
...
agreement0_.agency_id as agency4_66_0_,
^^^^^^^^^
...
from RVAGREHDROTB agreement0_
where agreement0_.agency_id=?
由于未知列(
agency_id
),该语句将不会执行。我想知道它从哪里得到 agency_id
柱子?我还没有映射任何具有此类名称的列。当我尝试使用
CollectingAgency.findAll()
从另一端查询时,它返回一个格式错误的 Object
:[
{
type: "0400300",
agencyClass: "12",
...
agreement: [
是的,就像那样,使用
agreement
具有左方括号的键 [
但没有右括号 ]
.另外,不会检索表的其他属性。如何使用类似于以下的结果对象实现查询:
Agreement.findAll()
:[
{
code: "1212",
branchCode: "a014s",
...
agency: {
type: "0400300",
agencyClass: "12",
...
},
...
},
{
code: "1213",
branchCode: "a014z",
...
agency: {
type: "0400300",
agencyClass: "12",
...
},
...
},
...
]
和
CollectingAgency.findAll()
:[
{
type: "0400300",
agencyClass: "12",
...
agreement: [
{
code: "1212",
branchCode: "a014s",
...
},
{
code: "1213",
branchCode: "a014z",
...
},
...
]
},
...
]
最佳答案
在您的协议(protocol)类(class)中,您有
static belongsTo = [agency: CollectingAgency]
这将在您的类(class)中创建一个“机构”字段。您看到的机构 ID 只是将您的“机构”字段映射到数据库中的“机构”列。
关于grails - 来自一对多 Grails 域的查询返回的格式错误的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31018582/