Redis(grails插件)不会持久存在Enum Object

时间:2011-07-28 09:20:33

标签: grails enums redis

我有一个grails域类我必须坚持使用Redis,类似这样:

class A {
    String one
    Integer two

    B three

    E four

    mapWith = "redis"
}

class B {
    String name
}

enum E {
   VALUE1, VALUE2
}

当我使用GORM .save()方法持久保存A类实例时,除了枚举字段“4”外,Redis正确保存它。

正如您所见,事实已知并在此处报告:http://jira.grails.org/browse/GPREDIS-3

是否有一个很好的解决方法来保存Enum或类似的东西? 我们正在考虑一个String对象数组,您怎么看?

1 个答案:

答案 0 :(得分:3)

我已经实现了这个,但它对Gemfire不起作用,我等到所有受支持的nosql提供程序修复之后才推出修复程序。作为一种解决方法,您可以将inList约束与持久String属性和非持久性get / set对的组合与当前属性的名称结合使用,例如

class A {
   String one
   Integer two

   B three

   String fourString

   void setFour(E e) {
      fourString = e?.name()
   }
   E getFour() {
      fourString ? E.valueOf(fourString) : null
   }

   static constraints = {
      fourString inList: E.values()*.name()
   }

   static transients = ['fourString']

   static mapWith = "redis"
}