【发布时间】:2011-11-22 21:26:15
【问题描述】:
我正在关注 Grails in Action 中的示例。我在理解 addTo*() 函数的工作原理时遇到了问题。
我有一个简单的域:用户、帖子、标签,具有以下关系:
- 用户一对一帖子
- 用户一对一标签
- 发布 M 对 M 标记
当我运行以下代码时(第一种情况):
1. def user = new User(userId: 'joe', password: 'secret').save()
2. def tagGroovy = new Tag(name: 'groovy')
3. def tagGrails = new Tag(name: 'grails')
4. user.addToTags(tagGroovy)
5. user.addToTags(tagGrails)
6.
7. def groovyPost = new Post(content: 'A groovy post')
8. user.addToPosts(groovyPost)
9. groovyPost.addToTags(tagGroovy)
10.
11. User.get(1).tags.each {println it.id + " " + it.name}
12. User.get(1).posts.each {println it.id + " " + it.content + " " + it.dateCreated}
我明白了:
null grails
null groovy
null A groovy post null
如果我将第 4、5 和 8 行更改为:
4. user.addToTags(tagGroovy).save(flush: true)
5. user.addToTags(tagGrails).save(flush: true)
8. user.addToPosts(groovyPost).save(flush: true)
我明白了:
2 grails
1 groovy
1 A groovy post Tue Nov 22 21:00:00 WET 2011
有人可以解释为什么在第一种情况下id 和dateCreated 属性没有持久化吗?
【问题讨论】:
标签: grails grails-orm flush