我正在尝试在grails中进行一对多的域映射。这是两个类:
class TNDetails {
String tn
String tnpk
static hasMany = [iccid: ICCID]
static mapping = {
table 'ni_tn'
version false
tnpk column : 'TN_PK'
tn column: 'TN'
id column: 'TN_PK',name: 'tnpk'
}
}
class ICCID {
String sim
String customer
static belongsTo = [tn: TNDetails]
static mapping = {
table 'ni_sim'
version false
sim column: 'ICCID'
customer column: 'CUSTOMER'
tn column: 'TN_FK'
id column: 'SIM_PK'
}
}
相应的查询可以写成:select TN,ICCID from ni_tn,ni_sim where ni_tn.TN_PK = ni_sim.RELATED_TN and tn_pk=1290
。现在在我的控制器中,我通过传递tn_pk来获取详细信息:
def index() {
def pk = params.tnPK
def details = TNDetails.findAll {
(tnpk == pk)
}
respond details
}
我得到以下结果:
[
{
"class": "com.evolving.resource.tn.TNDetails",
"id": 1290,
"tnpk": "1290",
"iccid": [
{
"class": "com.evolving.resource.iccid.ICCID",
"id": 4209
}
],
"tn": "447400002035"
}
]
现在问题是它没有显示属性sim
和customer
(来自ICCID类)。我如何显示这两个参数。我是什么在这里做错了吗?
答案 0 :(得分:5)
改变你的:
respond details
到:
JSON.use("deep") {
respond details as JSON
}
深层转换器完全呈现关联(嵌套域类实例)并处理循环关系(documentation)