2012-09-02 66 views
0

我有一个在我的数据库称为“区”表:检索所有行数据库的Grails

+----+---------+-------------+----------+------+------------------------------------------------+-----------+ 
| id | version | description | homepage | logo | name           | region_id | 
+----+---------+-------------+----------+------+------------------------------------------------+-----------+ 

所以,我的控制器上,我有:

def show = { 
     def districtInstance = District.get(params?.id) 
     println districtInstance 
     println params 
     if(!districtInstance){ 
      flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'district.label', default: 'District'), params.id])}" 
      redirect(action : "list", params?.id) 
     } 
     else{ 
      [districtInstance : districtInstance] 
     } 
    } 

虽然我很期待看到完整的一行:

| 71 |  0 | bogus |   |  | bogus          |   4 | 

我只看到:

bogus 

在控制台上。我怎样才能访问整个行? (特别是districtInstance.region_id?)

回答

1
println districtInstance?.region.id 

在Groovy,和面向对象的语言,你可以navegate类属性那样,但是你应该知道的Law of Demeter

+4

Yuck。懒惰地加载_entire_地区只是为了得到它的ID。 –

2

println districtInstance只打印toString()方法的输出。使用println districtInstance?.dump()查看更多输出,包括所有类字段。但它看起来不像数据库视图,因为它是一个Groovy对象,而不是数据库查询结果。

根据问题更新:如果您需要region_id,您可以通过districtInstance.regionId得到它,它不需要额外的数据库调用。一般

+0

我的答案更新。 –

相关问题