加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Grails域对象中维护自引用多对多关系的双方

发布时间:2020-12-14 16:20:34 所属栏目:大数据 来源:网络整理
导读:我在使用grails中获得多对多关系时遇到了一些问题.以下是否有任何明显错误: class Person { static hasMany = [friends: Person] static mappedBy = [friends: 'friends'] String name List friends = [] String toString() { return this.name }}class Boo
我在使用grails中获得多对多关系时遇到了一些问题.以下是否有任何明显错误:

class Person {
    static hasMany = [friends: Person]
    static mappedBy = [friends: 'friends']

    String name
    List friends = []

    String toString() {
        return this.name
    }
}

class BootStrap {
     def init = { servletContext ->
        Person bob = new Person(name: 'bob').save()
        Person jaq = new Person(name: 'jaq').save()
        jaq.friends << bob

        println "Bob's friends: ${bob.friends}"
        println "Jaq's friends: ${jaq.friends}"
     }
}

我希望Bob与Jaq成为朋友,反之亦然,但我在启动时得到以下输出:

Running Grails application..
Bob's friends: []
Jaq's friends: [Bob]

(我使用的是Grails 1.2.0)

解决方法

这似乎有效:

class Person {
    static hasMany   = [ friends: Person ]
    static mappedBy  = [ friends: 'friends' ]
    String name

    String toString() {
        name
    }
}

然后在BootStrap中:

class BootStrap {
     def init = { servletContext ->
        Person bob = new Person(name: 'bob').save()
        Person jaq = new Person(name: 'jaq').save()

        jaq.addToFriends( bob )

        println "Bob's friends: ${bob.friends}"
        println "Jaq's friends: ${jaq.friends}"
     }
}

我得到以下内容:

Running Grails application..
Bob's friends: [jaq]
Jaq's friends: [bob]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读