Grails - 服务获取旧的域数据

标签 grails groovy

我有以下域模型:

class Folder {
    User user

    Set files = []
    static hasMany = [files: File]

    static mapping = {
        tablePerHierarchy false
        files cascade: 'all-delete-orphan'
    }

    static constraints = {
    }
}

我有一个请求,它返回特定文件夹的文件列表。有时,后续调用会给出不同的结果。数据库已更新且正确,因此该服务似乎获取了缓存的数据。

真的有某种缓存可以使这种情况发生吗?我该如何解决?

最佳答案

如果没有更多细节,回答您的问题有点困难,但我可以为您提供这种行为的几个常见原因:

  • 如果您使用 Folder.get(id) 进行查询,则查询绑定(bind)到
    如果有,则从二级缓存(而不是 db)中选择对象
    在缓存中。如果是这种情况,您应该使用动态查找器,
    IE。,
     Folder.findById(id)
    

    这将始终从数据库中获取新对象。
  • 在保存文件夹对象时,您可以考虑刷新
    通过在 save 方法中传递选项 flush: true 来休眠 session :
       folder.save(flush: true)
    
  • 关于Grails - 服务获取旧的域数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26921001/

    相关文章:

    java - GrailsParameterMap 在 Grails 中不可序列化

    grails - Grails:检索所有最新的子记录

    java - Eclipse Maven 插件无法创建 groovy-maven-archetype 项目

    grails - WSClient Soap客户端在grails/groovy中

    xml - 用于读取 xml 文件并使用文件内容更新下一步请求的 Groovy 脚本

    java - apache-tomcat-8.0.14 中的内存泄漏

    mysql - Grails Web 应用程序为远程数据库生成 MySql 重复条目,但不为本地测试数据库生成

    grails - Remote 插件可以与Grails 3一起使用吗?

    grails - 即使使用 DELEGATE_FIRST/DELEGATE_ONLY 解析策略,也无法隐式委托(delegate)闭包内的方法

    maven - 如何在 Groovy 中导入 jenkins-api?