【发布时间】:2013-10-25 21:09:25
【问题描述】:
我正在尝试根据“状态”从另一个对象中删除几个对象。我不断收到“已删除的对象将被级联重新保存...”错误。
我已经搜索过这个问题,阅读了所有帖子,尝试了各种建议,但仍然无法正常工作。
我有两个相互引用的域。这是代码。希望有人能告诉我我做错了什么。而且,我是 Grails 的新手。如果它丢给我了,所以我仍在学习。
class Room {
static def hasMany = [devices : Device]
static def hasOne = [status: RoomStatus]
Integer roomId
String name
static constraints = {
roomId unique: true
}
static mapping = {
devices sort:'id', order: 'asc'
}
}
class Device {
static def belongsTo = [room: Room]
static def hasOne = [status: DeviceStatus]
Integer deviceId
String name
static constraints = {
deviceId nullable: true, unique: true
}
static mapping = {
}
}
这是我用来从房间中移除所有处于“已删除”状态的设备的方法。它在 Room 控制器中:
def removeDeletedDevices(Long id) {
def roomInstance = Room.get(id)
if (!roomInstance) {
// redirect to error page
return
}
for (def device : roomInstance.devices) {
if (true == device.status.toString().equals("Deleted")) {
try {
device.delete(flush: true)
} catch (DataIntegrityViolationException e) {
// report error
break;
}
}
}
// redirect to report page.
}
我试过了
- roomInstance.removeFromDevices(device) 前删除。
- 在设备控制器中删除之前
到目前为止没有运气。我做错了什么?
【问题讨论】:
-
可能重复here.