从一对多 Grails 域查询返回格式错误的对象
Malformed object returned by query from a one-to-many Grails domain
考虑这两个 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()
从另一端查询时,它 returns 格式错误 Object
:
[
{
type: "0400300",
agencyClass: "12",
...
agreement: [
是的,就像那样,agreement
键有一个左方括号 [
但没有右括号 ]
。另外,不会检索 table 的其他属性。
如何使用类似于这些的结果对象实现查询:
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",
...
},
...
]
},
...
]
在您的协议中class您有
static belongsTo = [agency: CollectingAgency]
这将在您的 class 中创建一个 'agency' 字段。您看到的 agency_id 只是将 'agency' 字段映射到数据库中的 'agency' 列。
考虑这两个 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()
从另一端查询时,它 returns 格式错误 Object
:
[
{
type: "0400300",
agencyClass: "12",
...
agreement: [
是的,就像那样,agreement
键有一个左方括号 [
但没有右括号 ]
。另外,不会检索 table 的其他属性。
如何使用类似于这些的结果对象实现查询:
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",
...
},
...
]
},
...
]
在您的协议中class您有
static belongsTo = [agency: CollectingAgency]
这将在您的 class 中创建一个 'agency' 字段。您看到的 agency_id 只是将 'agency' 字段映射到数据库中的 'agency' 列。