0

如果我有一个使用 GORM 持久化的对象,并且 Mongo 中它引用的集合发生了变化,我该如何列出这些属性?例如(不是我的实际用例),我有一个名为 Toy 的类,它有字段名称和价格,然后有人将制造商添加到数据库,但没有添加代码......

class Toy {
  String name
  Double price
}

class SomeController {
  def show() {
    def Toy t
    t = Toy.get(1)
    render t['manufacturer'] 
  }
}

t['manufacturer'] 工作正常。无论类的字段定义如何,都调用加载数据库中的所有属性,但我(对 Groovy 非常陌生)不知道如何列出这些可下标的属性以了解是否有更改。

4

2 回答 2

0

我猜您真正要寻找的是在底层 mongo DB 实体中设置的动态属性。

执行以下操作来获取他们的名字:

def nativePropertyNames = domainInstance.dbo.keySet()

如果您只想要动态属性,这将解决问题:

def dynamicPropertyNames = domainInstance.dbo.keySet() - "_id" - domainInstance.properties.keySet() 
于 2013-05-16T17:49:19.857 回答
0

查看对象上的属性字段

t.properties.each { prop, val ->
  println "Property: $prop $val"
}

但请注意,“元类”和“类”总是由 groovy 放置在那里的。groovy 中的一个常见习惯用法是:

foo.properties.each { prop, val ->
    if(["metaClass","class"].find {it == prop}) return
    // else do something with the property or value
}
于 2013-02-06T04:35:21.147 回答