在我的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中执行此操作?
答案 0 :(得分:3)
使用您当前的方法,您可以
def show(){
// look up your patient object
def patient = Patient.get(123)
def patientCityObject = Cities.findByCityName(patient.city)
[patientCityObject: patientCityObject ]
}
GSP:
<p>${patientCityObject.cityName}</p>
然而,
如果您定义域名之间的关联,那么当您访问城市时,Grails会加载您的城市。要访问与Patient关联的城市对象,您可以将其定义如下:
class Patient {
...
Cities city;
...
}
然后,当您拥有患者对象时,您可以轻松访问其物业城市。
def patient = Patient.get(123)
patient.city.cityName
这将为您提供与您的患者相关的城市对象。然后你可以将它传递给你的GSP并使用它。
要了解有关GORM和对象关系的更多信息,请阅读Object Relational Mapping