[Grails] 如何删除多对多关系?

zengsun 2008-01-20
Grails中雇员和角色的多对多关系中,可以通过代码Role.addToEmployees(someEmployee).save()添加关系。
但文档中没有提到如何删除这种关系呀!
雇员和角色类的定义如下:
class Employee {
    String name
    String login
    String password
    Boolean loginEnable
    String identification
    Date birthday
    Date joinDate
    String tel

    static belongsTo = Role
    
    static hasMany = [events:Event, roles:Role]

    static constraints = {
        name(size:2..20)
        login(size:2..20, unique:true, nullable:false)
        password(size:6..12)
        loginEnable()
        identification(maxSize:18)
        birthday(max:new Date() - 18*365)
        joinDate()
        tel(nullable:true)
    }

    String toString() {
        this.name
    }
}

class Role {
    String title

    static hasMany = [employees:Employee]

    String toString() {
        this.title
    }
}
jy00057800 2008-01-23
多对多 关系 要调用belongto所属方 手动删除
jy00057800 2008-01-23
不过好像 可以 我给个代码你看看 ,不好意思
    def delete = {
          def role = Role.get(params.id)
          ///删除中间表内容
          role.menus.toList().each {
              it.removeFromRoles(role)
          }
          role.delete()
          redirect(action:list)
    }
zengsun 2008-01-23
哈哈,你从哪里看到removeFrom*方法的!
http://grails.org/doc/1.0.x/guide/single.html文档中没有提到。
zengsun 2008-01-23
jy00057800 写道
不过好像 可以 我给个代码你看看 ,不好意思
    def delete = {
          def role = Role.get(params.id)
          ///删除中间表内容
          role.menus.toList().each {
              it.removeFromRoles(role)
          }
          role.delete()
          redirect(action:list)
    }

谢谢,得正解!
jy00057800 2008-01-24
上网找一个 grails-docs-1.0-RC1.pdf 的文档用 adober Reader 打开 可以搜索
把你要的搜索就行,比如你要删除,应该和remove有关系,你就搜索remove ,慢慢查就可以查到removeFrom了 呵呵
Global site tag (gtag.js) - Google Analytics