1

在我的 grails 项目中,我创建了一个名为 Patient 的对象的实例,该对象有一个城市。

class Patient {

 String name;
 String surname;
 String cf;
 String address;
 String cap;
 String city;
 String province;
 String country;
 String phone_1;
 String phone_2;
 String email;
 String vat;

}

当我创建一个病人时,我通过它的 id 存储城市,但我希望在 show() 和 list() 方法中,我看到相关城市的名称。

Cities 域类链接到我的数据库中的一个表,如下所示

class Cities {

String cityName;
String capOfCity;
String provinceOfCity;

static constraints = {
}

static mapping = {
    table 's_cap'
    id column: 'idcap'
    cityName column: 'comune'
    capOfCity column: 'cap'
    provinceOfCity column: 'prov'
    version false
}  
}

我想我必须对 db 执行查询以通过 id 获取它的名称,但是我怎样才能在 gsp 中做到这一点?

4

1 回答 1

3

使用您当前的方法,您可以做到

def show(){
   // look up your patient object
   def patient = Patient.get(123)
   def patientCityObject = Cities.findByCityName(patient.city)
   [patientCityObject: patientCityObject ]
}

普惠制:

<p>${patientCityObject.cityName}</p>

然而,

如果您定义了域之间的关联,那么 Grails 将在您访问它时加载您的城市。要访问与 Patient 关联的城市对象,您可以将其定义如下:

class Patient {
 ...
 Cities city;
 ...

}

然后,当您拥有耐心对象时,您可以轻松访问其属性城市。

def patient = Patient.get(123)
patient.city.cityName

这将为您提供与患者关联的城市对象。然后你可以将它传递给你的 GSP 并使用它。

要了解有关 GORM 和对象关系的更多信息,您可以阅读对象关系映射

于 2013-08-29T12:00:29.860 回答