如果我有一个GORM持久化对象和Mongo中的集合,它引用了更改,我该如何列出这些属性?例如(不是我的实际用例),我有一个名为Toy的类,它有字段名称和价格,然后有人将制造商添加到数据库而不是代码......
class Toy {
String name
Double price
}
class SomeController {
def show() {
def Toy t
t = Toy.get(1)
render t['manufacturer']
}
}
t ['制造商']工作正常。调用加载数据库中的所有属性而不管类的字段定义,但是我(对Groovy来说很新)不知道如何列出这些可订阅的属性以了解是否有更改。
答案 0 :(得分:0)
查看对象
上的属性字段t.properties.each { prop, val ->
println "Property: $prop $val"
}
但请注意,“metaClass”和“class”总是被groovy放在那里。 groovy中常见的一句话是:
foo.properties.each { prop, val ->
if(["metaClass","class"].find {it == prop}) return
// else do something with the property or value
}
答案 1 :(得分:0)
我猜你真正想要的是在底层mongo数据库实体中设置的动态属性。
执行以下操作以获取其姓名:
def nativePropertyNames = domainInstance.dbo.keySet()
如果你只想要动态属性,那么就可以了:
def dynamicPropertyNames = domainInstance.dbo.keySet() - "_id" - domainInstance.properties.keySet()