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

标签 grails groovy many-to-many grails-orm

我在使用 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 成为 friend ,反之亦然,但我在启动时得到以下输出:

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]

关于grails - 在Grails域对象中维护自引用多对多关系的双方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2517390/

相关文章:

mysql - 像谷歌这样的 Grails 动态搜索

java - 在grails中上传图片

node.js - 如何迭代改变后端技术?

java - 如何使用多对多字段原生查询 WHERE IN?

c# - 在 Entity Framework Core 中使用具有多对多关系的列表

java - 如何从多部分文件中获取文件,以便可以创建PDImageXObject?

groovy - @TypeChecked 和 @CompileStatic 之间的区别

grails - 常规显示列表 <list> 与每个标签

loops - 如何将 map 列表传递到GSP页面 View 并对其进行迭代

hibernate @ManyToMany双向渴望获取