我有以下域名结构:
class Emloyee {
static hasMany = [users: User]
.....
}
我想编写一个
的方法我的代码如下:
def deleteUser(User userInstance) {
def employee = Employee.find { users.contains(userInstance) }
employee .removeFromUsers(userInstance)
employee .save(flush: true, failOnError: true)
userInstance.delete(flush: true, failOnError: true)
}
这段代码给了我一个例外:
No signature of method: grails.gorm.DetachedCriteria.contains() is applicable for argument types: (User)
我做错了什么?谢谢!
答案 0 :(得分:1)
用户是否始终包含一名员工?
然后你可以使用
static belongsTo = [employee: Employee]
您的用户域类中的。在这种情况下,您不需要从员工域中手动删除用户。当您调用userInstance.delete(...)
时,GORM会将其删除如果您不想使用belongsTo,则可以通过以下方式删除用户:
def deleteUser(User userInstance) {
def c = Employee.createCriteria()
def result = c.get {
users {
idEq(userInstance.id)
}
}
result.removeFromUsers(userInstance)
userInstance.delete(flush: true, failOnError: true)
}
希望这会有所帮助。 斯文