【发布时间】:2016-11-06 21:34:27
【问题描述】:
在 Oracle 数据库中将列从 number 更改为 varchar2 后,我在 Hibernate 中遇到了一个奇怪的行为。
Caused by: org.hibernate.HibernateException: Wrong column type in XXX for column SESSION_TOKEN. Found: varchar2, expected: number(10,0)
在我相应的域对象中,我将变量从 Integer 更改为 String,如下所示:
@Column(name = "SESSION_TOKEN", nullable = true)
private String sessionToken;
我在persistence.xml中已经有了以下属性
<property name="hibernate.hbm2ddl.auto" value="validate"/>
所以在我看来,内部缓存之类的东西仍然包含表的旧描述? 有任何想法吗?? 我的环境: JBoss AS:7.1.1 甲骨文:11.2
【问题讨论】:
-
检查您的配置中是否启用了架构验证。
hibernate.hbm2ddl.auto=validate -
我已经在persistence.xml中有这个属性了,还是不行!
-
您在类级别或数据库级别更改了列的数据类型?
-
两者:首先我做了一个“alter table”,将列从 number 更改为 varchar2,然后我将域对象从 Integer 更改为 String。
-
在你的域对象中尝试@column(columndefination="char")
标签: java oracle hibernate jakarta-ee