我是Grails的新手,我遇到了一个(可能是愚蠢的)问题。当我尝试保存域实例时,它失败并显示... on field 'deviceUsages[0].start': rejected value [null]...
这是失败的行动:
def save() {
def user=params.remove('user.id')
def deviceInstance=new Device(params)
DeviceUsage du = new DeviceUsage(device: deviceInstance, user: User.get(user), start: new Date(), end: null)
if(user){
deviceInstance.addToDeviceUsages(du)
}
if (!deviceInstance.save(flush: true)) {
deviceInstance.errors.each {
println it
}
render(view: "create", model: [deviceInstance: deviceInstance])
return
}
du.save()
flash.message = message(code: 'default.created.message', args: [message(code: 'device.label', default: 'Device'), deviceInstance.id])
redirect(action: "show", id: deviceInstance.id)
}
正如您所看到的,'start'显然已初始化为新日期...... 有问题的域类如下:
class Device {
String name
String description
Date created = new Date()
Date deactivated
User currentUser
static hasMany = [
deviceUsages: DeviceUsage
]
static constraints = {
name(nullable:false, blank:false)
description(nullable:false, blank:true)
created(nullable:false, display:false)
deactivated(nullable:true)
currentUser(nullable:true)
}
和
class DeviceUsage implements Serializable{
Date start
Date end
static belongsTo = [
device: Device,
user: User
]
static constraints = {
start(nullable:false)
end(nullable:true)
}
static mapping = {
id composite: ['device', 'user']
version false
}
感谢您的帮助
答案 0 :(得分:0)
嗯我设法解决了......显然new DeviceUsage(device: deviceInstance, user: User.get(user), start: new Date(), end: null)
因任何原因离开了null,所以在下一行添加du.start = new Date()
修复了它...