【问题标题】:Querying database in Grails在 Grails 中查询数据库
【发布时间】:2016-06-29 11:00:55
【问题描述】:

数据库中的值是这样保存的 ::{"rating1":"2","rating2":"4","rating3":"5","rating4":"0","rating5":"0"}, 现在我需要访问 2、4、5 等单个值。

我创建了域类类型的变量“评级”,并尝试使用 (.) 运算符作为对象访问,但它不起作用并给出错误: :exception::groovy.lang.MissingPropertyException: 没有这样的属性: rating1 类: java.lang.String

,我尝试转换为数组和列表(作为 Array、作为 ArrayList、作为 List)等,但这也不起作用。 投射到列表给出异常:exception::org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{"rating1":"2","rating2":"4","rating3":"5", "rating4":"0","rating5":"0"}' 类 'java.lang.String' 到类 'java.util.List' 。

像“rating[3]”这样的访问会给出答案“a”。我应该使用“rating[11]”来获得价值 2 还是有什么办法。 可能的解决方案是什么。请帮忙。

【问题讨论】:

    标签: database grails


    【解决方案1】:

    您正在存储一个字符串,因此您只有字符串操作可用。您需要解析该字符串以单独获取属性(也许是 JsonSlurper?)。

    rating[character-position] IMO 是个坏主意。

    也许瞬态(查看 GORM 文档)会很有用。

    class YourDomain {
        String yourField
        String getRating1() { new JsonSlurper().parseText(yourField).rating1 }
    }
    

    也许吧。完全未经测试,只是一个想法。

    【讨论】:

    • 非常感谢。我尝试了您的想法,并找到了一种使用 JSON.parse(rating) 的更简单方法,并且可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多