我正在尝试使用hibernate来填充selectonemenu
中的jsf ApplicationBean
(在Liferay中)。问题是我的初始SessionFactory
创建失败问题。在将我的函数放入applicationbean之前,我在sessionbean中设置它们并且没有错误。
现在是完整的错误
Initial SessionFactory creation failed.
java.lang.ClassCastException: org.hibernate.type.StringType cannot be cast to org.hibernate.type.VersionType
答案 0 :(得分:8)
您很可能在某处VARCHAR
列VERSION
,而Hibernate的逆向工程工具会将其生成为:
<version name="version" type="string">
<column name="VERSION" length="20" />
</version>
而不是:
<property name="version" type="string">
<column name="VERSION" length="20" />
</property>
前者错了。首先,我认为这不是你想要的。其次,版本字段不允许使用字符串,如章节5.1.9. Version (optional)中所述:
版本号可以是Hibernate类型
long
,integer
,short
,timestamp
或calendar
。
这个问题已在HHH-3002中以某种方式报告(实际上,它应该分配给Hibernate Tools,而不是Hibernate Core),我看到了两种解决方法。任
答案 1 :(得分:1)
您映射为类的版本的某个域类的属性是string类型。这不是版本的有效类型。更改内容取决于您在底层数据库中实现版本控制的方式。