我从grails 2.2.1中的hasMany
关系中删除对象时遇到了一个奇怪的行为。
使用
删除无法正常工作def lessonInstance = Lesson.get(lessonId)
long id = Long.valueOf(taskId)
def task = Task.get(id)
lessonInstance.removeFromTasks(task)
删除正在使用时:
def lessonInstance = Lesson.get(lessonId)
long id = Long.valueOf(taskId)
def task = lessonInstance.tasks.find { it.id == id }
lessonInstance.removeFromTasks(task)
我希望两者都能工作,我现在好奇为什么后者有效,第一个不起作用。以下是包含的域类:
class Lesson{
static hasMany = [tasks:Task]
static hasOne = [skill:Skill]
static constraints = {
tasks(nullable: false, minSize: 1)
skill(nullable: true)
}
}
class Task extends Artefact{
Integer experiencePoints=0
Integer credits=0
static constraints = {
experiencePoints(blank: false, min: 0)
credits(blank: false, min: 0)
}
}
谢谢!
答案 0 :(得分:0)
我认为你应该阅读:http://blog.springsource.org/2010/07/02/gorm-gotchas-part-2/,因为它解释了为什么你必须多做一些,让它发挥作用。
答案 1 :(得分:0)
听起来问题可能是由于get和find之间的缓存差异。请参阅Burt Beckwith对Difference between findAll, getAll and list in Grails的回答。
...我尝试使用grails控制台复制问题但是找到并获取方法似乎都有效。