我正在尝试从多个关系中删除一个对象。 用户有一个名为guest的对象,guest有一个有很多叫做孩子的对象,请看:#/ p>
class User {
transient springSecurityService
String username
String password
String email
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
Guest guest
}
旅客:
class Guest {
static hasMany = [children:Child]
static constraints = {
}
}
我使用以下内容添加子项:
User.guest.addToChildren(Child.get(params.id))
这非常有效。但我无法做到以下几点:
User.guest.removeFromChildren(Child.get(params.id))
我也试过
Guest guest = User.guest
guest.removeFromChildren(Child.get(params.id))
guest.save(flush: true, failOnError: true)
没有成功。我还进行了适当的检查,以确保子实例包含在guest虚拟机中并匹配
Child.get(params.id)
有什么想法吗?
答案 0 :(得分:1)
你问题的神秘部分是你从哪里获得用户?它可能是一个分离的实例,可能会导致您的问题。我会尝试以下方法:
Guest guest = User.guest.merge() // make sure Guest has a hibernate context
Child child = Child.get(params)
guest.removeFromChildren(child)
// don't believe what the docs tell you
// I always have to delete the instance I am removing
// from the collection
child.delete()
在服务方法中执行此操作或使用事务闭包将其包围。