【问题标题】:Grails (unsaved) == null from dynamic finderGrails(未保存)==来自动态查找器的null
【发布时间】:2016-06-07 23:46:48
【问题描述】:

我有简单的代码覆盖RestfulController 子类中的show() 方法。以下代码改编自 Grails 2.5.4 文档中的“Implementing the 'show' action”示例。

def show() {
    Coupons instance = Coupons.findByCode(params.code)
    print("instance: ${instance}")

    if (instance == null) {
        render status: 404
    }
    else {
        return instance
    }
}

当在数据库 (MongoDB) 中没有找到匹配的文档时,print 语句按预期指示 null 对象。

instance: null

当找到匹配的文档时,print 语句会打印以下内容。

instance: com.example.Coupons: (unsaved)

我的问题是,当找到一个文档时,为什么它会以这种“未保存”状态返回?更重要的是,当对象肯定存在时,为什么条件instance == null 评估为true

【问题讨论】:

  • 变量code 未定义。我相信您很可能正在寻找params.code
  • 感谢@dmahapatro。这是我试图从我的控制器解释完整代码的一个错字。我现在修正了错字以引用params.code
  • 能否也添加Coupons 有问题的域类?
  • 感谢@dmahapatro 的建议。我实际上刚刚发现问题可能是域类中transients的定义。我删除了transients,现在show() 操作按需要响应。

标签: rest grails grails-orm


【解决方案1】:

看来问题是我的域类中存在transients。从我的域类中删除transients 列表似乎已经解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多