HibernateException:发现:clob,预期:varchar2(4000)

HibernateException: Found: clob, expected: varchar2(4000)

我在 Tomcat 7 上使用 Hibernate 3 和 ojdbc7.jar 的应用程序中有一个非常奇怪的错误: 在当前版本中,数据库列已更改为 CLOB,并按以下方式配置:

@Column(name = "BESCHREIBUNG")
@Length(min = 0, max = 4000)
@NotNull
@Lob
public String getBeschreibung() {

这在我的本地环境 (Oracle 11g XE) 和测试环境 (Oracle 12) 中工作得很好,但是在预运行环境 (Oracle 12) 中,我在应用程序启动期间收到以下错误:

org.hibernate.HibernateException: Wrong column type in XXXX.MYTABLE for column BESCHREIBUNG. Found: clob, expected: varchar2(4000 char)
at org.hibernate.mapping.Table.validateColumns(Table.java:283)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1343) at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:378)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)

对此有什么提示吗? 我已经检查了 tomcat 的 /lib - directoryif 有一个过时的 ojdbc 或 hibernate jar,但没有成功。

根据消息,他仍在等待 varchar2。正如他在找到 @Lob 时所期望的那样,我猜想您没有将代码更改部署到 prelive 环境(至少没有成功)。

添加列定义来解决这个问题。

@Column(name = "entity_value", columnDefinition="clob")

我刚刚删除了 @Length(...),效果非常好。