Grails如何JSONify域对象,包括其嵌套域类?

时间:2015-03-16 07:08:15

标签: grails groovy gorm

我正在尝试在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" } ]

现在问题是它没有显示属性simcustomer(来自ICCID类)。我如何显示这两个参数。我是什么在这里做错了吗?

1 个答案:

答案 0 :(得分:5)

改变你的:

respond details

到:

JSON.use("deep") {
    respond details as JSON
}

深层转换器完全呈现关联(嵌套域类实例)并处理循环关系(documentation