我有一个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对象数组,您怎么看?
答案 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"
}