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

前端之家收集整理的这篇文章主要介绍了在Grails域对象中维护自引用多对多关系的双方前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用grails中获得多对多关系时遇到了一些问题.以下是否有任何明显错误

  1. class Person {
  2. static hasMany = [friends: Person]
  3. static mappedBy = [friends: 'friends']
  4.  
  5. String name
  6. List friends = []
  7.  
  8. String toString() {
  9. return this.name
  10. }
  11. }
  12.  
  13. class BootStrap {
  14. def init = { servletContext ->
  15. Person bob = new Person(name: 'bob').save()
  16. Person jaq = new Person(name: 'jaq').save()
  17. jaq.friends << bob
  18.  
  19. println "Bob's friends: ${bob.friends}"
  20. println "Jaq's friends: ${jaq.friends}"
  21. }
  22. }

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

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

(我使用的是Grails 1.2.0)

解决方法

这似乎有效:

  1. class Person {
  2. static hasMany = [ friends: Person ]
  3. static mappedBy = [ friends: 'friends' ]
  4. String name
  5.  
  6. String toString() {
  7. name
  8. }
  9. }

然后在BootStrap中:

  1. class BootStrap {
  2. def init = { servletContext ->
  3. Person bob = new Person(name: 'bob').save()
  4. Person jaq = new Person(name: 'jaq').save()
  5.  
  6. jaq.addToFriends( bob )
  7.  
  8. println "Bob's friends: ${bob.friends}"
  9. println "Jaq's friends: ${jaq.friends}"
  10. }
  11. }

我得到以下内容

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

猜你在找的Groovy相关文章