【发布时间】:2010-11-05 17:36:07
【问题描述】:
我正在努力在 Grails 上建立关联。假设我有两个域类:
class Engine {
String name
int numberOfCylinders = 4
static constraints = {
name(blank:false, nullable:false)
numberOfCylinders(range:4..8)
}
}
class Car {
int year
String brand
Engine engine = new Engine(name:"Default Engine")
static constraints = {
engine(nullable:false)
brand(blank:false, nullable:false)
year(nullable:false)
}
}
这个想法是,用户可以在不首先创建引擎的情况下创建汽车,并且这些汽车会获得默认引擎。在 CarController 我有:
def save = {
def car = new Car(params)
if(!car.hasErrors() && car.save()){
flash.message = "Car saved"
redirect(action:index)
}else{
render(view:'create', model:[car:car])
}
}
在尝试保存时,我在 Car.engine 字段上得到一个空值异常,因此显然没有创建和保存默认引擎。我尝试手动创建引擎:
def save = {
def car = new Car(params)
car.engine = new Engine(name: "Default Engine")
if(!car.hasErrors() && car.save()){
flash.message = "Car saved"
redirect(action:index)
}else{
render(view:'create', model:[car:car])
}
}
也没有用。 Grails 不能保存关联的类吗?我怎样才能实现这样的功能?
【问题讨论】:
-
可以通过域类指定默认吗???我正在考虑按照您上面所做的方式进行初始化,但可能不是通过控制器。
标签: grails groovy aggregation