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(...)
,效果非常好。
我在 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(...)
,效果非常好。