Redis (плагин Grails) не сохраняется Enum Object - PullRequest
1 голос
/ 28 июля 2011

У меня есть класс домена grails, который я должен сохранить в Redis, что-то вроде этого:

class A {
    String one
    Integer two

    B three

    E four

    mapWith = "redis"
}

class B {
    String name
}

enum E {
   VALUE1, VALUE2
}

Когда я сохраняю экземпляр класса A с помощью метода GORM .save (), Redis сохраняет его правильно, за исключением поля enum "four".

Как видите, факт известен и сообщается здесь: http://jira.grails.org/browse/GPREDIS-3

Есть ли хороший обходной путь для сохранения Enum или чего-то подобного? Мы думаем о массиве объектов String, что вы думаете?

1 Ответ

3 голосов
/ 28 июля 2011

У меня это в основном реализовано, но оно не работает для 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"
}
...