Grails并不能保存域名

时间:2018-05-16 17:36:02

标签: grails gorm

我有两个域类

class Country {
     ... // some fields, including other domains
}

class City {
     ... // some fields, including other domains
     Country itsCountry
}

我的一种服务方法是:

City createCity(String name, Country country) {
    // country is existing and loaded in the controller's layer and passed here
    City city = new City()
    city.itsCountry = country // it is not persisted
    city.save('flush':true)
}

问题是在数据库中城市有空国家。 当然,我简化了这个例子,真的是它更复杂。 (不幸的是,一些重要的细节可能会丢失,我希望如果你遇到这个问题,你可以分享原因)

我做的没有成功:

  1. 使用国家/地区,在服务方法中通过ID获取,在保存城市对象之前保存并刷新
  2. 使itsCountry字段不可为空。所以我从数据库中得到一个例外,这个字段不能为空。
  3. 我觉得这一定是件微不足道的事情。这可能是什么原因?

1 个答案:

答案 0 :(得分:0)

在Grails中,我们已经可以在params中获得国家ID。权利。 例如,params?.countryId。

如果是国家表的新记录,则首先为国家创建新对象并在城市对象中分配。

例如,

Country country = new Country()//for new record
country.name=params?.countryName
City city=new City()
city.itsCountry = country 
city.save('flush':true)

如果您已经在表格中有国家/地区记录,则使用get方法获取对象并将其分配给城市。

例如,

Country country=Country.get(Long.valueOf(params?.countryId))
city.itsCountry = country 
city.save('flush':true)

我希望它会对你有所帮助。如果有任何疑问,请告诉我。