我在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
有没有人遇到过这个?
答案 0 :(得分:0)
并非所有类型都被映射 - 我认为这更多是来自hibernate方面的问题,实际上(ORM层需要知道如何持久保存它不知道的对象)。
查看joda-time plugin,它附带了一个特殊的库,它将joda Dates类映射到hibernate,然后你必须在映射闭包中指定它。
您应该尝试查看是否有人为BitSet编写了一个hibernate持久化程序,或者尝试使用其他类。