sách gpt4 ai đã đi

Hướng dẫn Grails addTo*

In lại 作者:行者123 更新时间:2023-12-04 11:13:34 30 4
mua khóa gpt4 Nike

我正在遵循 Grails in Action 中的示例。我有一个问题,如何理解 addTo*()功能有效。

我有一个简单的域:具有以下关系的用户、帖子、标签:

  • 用户1对M发帖
  • 用户一对一标签
  • 发布 M-to-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

    有人可以解释为什么在第一种情况下 nhận dạngdateCreated属性不持久化?

    1 Câu trả lời

    这确实是一个休眠问题。

    只有当您保存用户对象时,才会保存整个对象图。因此它们与用户相关联,但尚未保存在数据库中,因此它们没有 id。

    在您的示例中,如果您在 get(1) 行之前添加 User.save(flush: true ),您将看到所有新帖子都保留在数据库中。

    Peter Ledbrook 在这篇文章中对其进行了更好的解释 - http://blog.springsource.org/2010/06/23/gorm-gotchas-part-1/

    关于Grails addTo* 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234027/

    30 4 0
    Bài viết được đề xuất: svg - 在 SVG 中绘制一个空洞的形状
    Bài viết được đề xuất: .net - 避免在 StyleHelper.OnBindingValueInTemplateChanged 中发生 NullReferenceException 崩溃
    Bài viết được đề xuất: c - 字节顺序和整型变量
    Bài viết được đề xuất: c - 在 C 中传递和返回变量
    行者123
    Hồ sơ cá nhân

    Tôi là một lập trình viên xuất sắc, rất giỏi!

    Nhận phiếu giảm giá Didi Taxi miễn phí
    Mã giảm giá Didi Taxi
    Giấy chứng nhận ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com