Grails:GORM 和 BitSets?

标签 grails grails-orm 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 - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageSource': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.MappingException: An association from the table doc_group_permissions refers to an unmapped class: java.util.BitSet

有人遇到过这个吗?

最佳答案

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

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

您应该尝试查看是否有人为 BitSet 编写了休眠持久化程序,或者尝试使用不同的类。

关于Grails:GORM 和 BitSets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739365/

相关文章:

mysql - 如何从csv文件中获取数据并用mysql保存到grails中?

grails - 如何在grails 3中获取数据库连接

更新(使用新对象)列表时,Grails 代码失败,但没有找到匹配的编辑器或转换策略

C# 在不使用数据库的情况下在用户 session 之间持久化对象

grails - 如何更改Grails spring-security-ldap:2.0.1插件以使用自定义的AuthoritiesPopulator?

java - 在 Grails 中调整图像大小

grails - grails 中的 boolean 值不会被持久化?

orm - ORM 和持久性框架有什么区别?

使用 Spring + Hibernate 创建 MySQL 表

grails - 使用use(TimeCategory)时,使用Spock进行单元测试失败