1

memcached に保存できるようにするために、grails ドメイン クラスを Maps などにシリアライズしようとしました。

オブジェクトのみを読み取れるようにしたいのですが、ゴームクラッドは必要ありません。それらが持っている種類のインターフェースを壊すことなくそれらを読むだけです。

例:ドメインをマップに変換できます。これは、アクセスのインターフェイスを壊さないため.<property>です.findall

最初に手動でシリアル化を試みましたが、非常にエラーが発生しやすかったです。だから私はもっと一般的なものが必要でした。

次に、grails コーデックでマップとしてシリアル化しようとしました。

ここにテストレポがあります。

これがスニペットです。

しかし、StackOverFlowException が発生します。

また、すべてのドメインをシリアライズ可能としてマークしようとしましたが、org.hibernate.LazyInitializationException: could not initialize proxy - no Session のような休止状態のエラーを避けるために、memcached からドメインを戻すときにすべてのドメインを再アタッチする必要があります。

これを達成する方法を知っていますか?

この「ドメインクラスをmemcachedに保存する」のようなものをGoogleで検索するのは非常にイライラしますが、一般的な問題ではないことがわかります。

4

2 に答える 2

4

これを行うためのすぐに使えるソリューションは見当たりませんが、汎用性を維持したい場合は、次のように手動で (一貫して) 行うことができます。

def yourDomainInst = DefaultGrailsDomainClass(YourDomainClazz)
List listOfOnlyPersistantProperties = yourDomainInst.persistantProperties

def yourNewMap

yourObjects.each { obj ->
   listOfOnlyPersistantProperties.each { prop ->
      def propName = prop.name
      yourNewMap.put(propName, obj."$propName")
   }
}

そのようなものがうまくいくはずです。私は今それを試すことができないので、おそらく百のエラーがあることに注意してください。しかし、それは一般的な考えです.

于 2012-09-21T21:21:27.320 に答える
1

見てください:ドメインの GORM 永続プロパティのリストを取得する

于 2012-09-21T21:12:04.310 に答える