Redis(grails插件)不会持久化枚举对象
我有一个grails域类,我必须在Redis中持久化,类似这样:Redis(grails插件)不会持久化枚举对象,grails,enums,redis,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的实例时,Redis会正确地保存它,但枚举字段“four”除外 正如您所看到的,这一事实
class A {
String one
Integer two
B three
E four
mapWith = "redis"
}
class B {
String name
}
enum E {
VALUE1, VALUE2
}
当我使用GORM.save()方法持久化类A的实例时,Redis会正确地保存它,但枚举字段“four”除外
正如您所看到的,这一事实在这里被了解和报道:
是否有一个很好的解决方法来保存Enum或类似的东西?
我们正在考虑一个字符串对象数组,您认为如何?我已经实现了这个方法,但它对Gemfire不起作用,我正在等待所有支持的nosql提供程序修复它,然后再进行修复。作为一种解决方法,您可以将
inList
约束与持久的字符串
属性和具有当前属性名称的非持久的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"
}
为了实现这一点,我删除了“transients”映射,否则getter无法通过事实上未持久化的对应字符串检索字段。我是不是做错了?为什么指示将字符串作为临时字段?对不起,应该是'four',因为这只是一个get/set对。