我正在尝试使用 hibernate 来填充 ApplicationBean
(在 Liferay 中)中的 jsf selectonemenu
。问题是我遇到了 Initial SessionFactory
creation failed 问题。在将我的函数放入 applicationbean 之前,我将它们设置在 sessionbean 中并且没有出现错误。
现在完整的错误
Initial SessionFactory creation failed.
java.lang.ClassCastException: org.hibernate.type.StringType cannot be cast to org.hibernate.type.VersionType
最佳答案
您很可能在某处有一个名为 VERSION
的 VARCHAR
列,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) 章中所述:
Version numbers can be of Hibernate type
long
,integer
,short
,timestamp
orcalendar
.
此问题已在 HHH-3002 中以某种方式报告(实际上,它应该分配给 Hibernate Tools,而不是 Hibernate Core)我看到有两种解决方法。要么
- 手动修复映射
- 将该列重命名为其他名称。
关于java - Hibernate 初始 SessionFactory 创建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3044804/