【问题标题】:how to serialize domain classes grails如何序列化域类 grails
【发布时间】:2012-09-21 18:53:39
【问题描述】:

我尝试将 grails 域类序列化为 Maps 或类似的,以便能够将其存储在 memcached 中。

我只想能够读取对象,我不需要 gorm crud。只是为了在不破坏它们所拥有的接口的情况下阅读它们。

例如:我可以将域转换为地图,因为它不会破坏.<property>.findall 或类似的访问接口

首先我尝试进行手动序列化,但很容易出错。所以我需要更通用的东西。

然后我尝试使用 grails 编解码器将其序列化为地图。

Here is the testing repo.

Here is the snippet.

但我得到了 StackOverFlowException。

我还尝试将所有域标记为可序列化,但是当我将它们从 memcached 中带回时,我需要重新附加每个域,以避免出现 org.hibernate.LazyInitializationException: could not initialize proxy - no Session 等休眠错误

您知道实现此目的的方法吗?

谷歌搜索类似“在 memcached 中存储域类”这样的内容非常令人沮丧,发现这不是一个常见的问题。

【问题讨论】:

    标签: grails memcached grails-domain-class


    【解决方案1】:

    我还没有看到一个开箱即用的解决方案,但如果你想保持它的通用性,你可以手动(并且始终如一地)这样做:

    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")
       }
    }
    

    类似的东西应该可以。请注意,可能有一百个错误,因为我现在无法尝试,但这是一般的想法。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多