Grails:GORM和BitSet?

时间:2009-11-15 23:57:41

标签: grails gorm object-persistence bitset

我在official documentation中没有看到任何关于不支持的持久性数据类型的内容,因此我假设应该处理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] ERROR context.ContextLoader - 上下文初始化失败   org.springframework.beans.factory.BeanCreationException:创建名为'messageSource'的bean时出错:bean的初始化失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'transactionManager'的bean时出错:在设置bean属性'sessionFactory'时无法解析对bean'sessionFactory'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'sessionFactory'的bean时出错:init方法的调用失败;嵌套异常是org.hibernate.MappingException:表doc_group_permissions中的关联引用了一个未映射的类:java.util.BitSet

有没有人遇到过这个?

1 个答案:

答案 0 :(得分:0)

并非所有类型都被映射 - 我认为这更多是来自hibernate方面的问题,实际上(ORM层需要知道如何持久保存它不知道的对象)。

查看joda-time plugin,它附带了一个特殊的库,它将joda Dates类映射到hibernate,然后你必须在映射闭包中指定它。

您应该尝试查看是否有人为BitSet编写了一个hibernate持久化程序,或者尝试使用其他类。