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

オブジェクトのプロパティ フィールドを見てください。

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

ただし、"metaClass" と "class" は常に groovy によって配置されることに注意してください。groovy の一般的な Idom は次のとおりです。

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 に答える
0

あなたが本当に探しているのは、基になる mongo DB エンティティに設定されている動的プロパティだと思います。

名前を取得するには、次の手順を実行します。

def nativePropertyNames = domainInstance.dbo.keySet()

動的プロパティのみが必要な場合は、これでうまくいきます。

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