Граальс: ГОРМ и Битсеты? - PullRequest
3 голосов
/ 16 ноября 2009

Я ничего не вижу в официальной документации о неподдерживаемых типах персистентных данных, поэтому я работаю в предположении, что типы, доступные на языке Groovy, должны обрабатываться. Однако для следующего класса домена:

class DocGroupPermissions {

   Workgroup workgroup
   Document document;
   BitSet permissions = new BitSet(2)

   void setPermissions(boolean canRead, boolean canWrite) {
       setReadPermissions(canRead)
       setWritePermissions(canWrite)
   }

   void setReadPermissions(boolean canRead) {
      permissions.set(0,canRead)
   }
   void setWritePermissions(boolean canWrite) {
      permissions.set(1,canWrite)
   }

   boolean getReadPermissions() {
      return permissions.get(0)
   }

   boolean getWritePermissions() {
      return permissions.get(1)
   }


   static belongsTo = [workgroup:Workgroup, document:Document]

   static constraints = {
      workgroup(nullable:false, blank:false)
      document(nullable:false, blank:false)
   }
}

Я получаю:

2009-11-15 16: 46: 12,298 [main] ОШИБКА context.ContextLoader - Сбой инициализации контекста org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'messageSource': сбой инициализации компонента; вложенное исключение: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory '; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'sessionFactory': сбой вызова метода init; Вложенное исключение - org.hibernate.MappingException: ассоциация из таблицы doc_group_permissions ссылается на не сопоставленный класс: java.util.BitSet

Кто-нибудь сталкивался с этим раньше?

1 Ответ

0 голосов
/ 16 ноября 2009

Не все типы сопоставлены - я думаю, что это скорее проблема со стороны гибернации, на самом деле (слой ORM должен знать, как сохранить объекты, о которых он не знает).

Проверьте плагин joda-time , он поставляется со специальной библиотекой, которая отображает классы joda Dates в режим гибернации, а затем вы должны указать его при закрытии сопоставления.

Вы должны попытаться выяснить, написал ли кто-нибудь персистентный код спящего режима для BitSet, или попытаться использовать другой класс.

...