将Oracle Clob检索到Java String时,JPA失败

时间:2014-05-30 06:47:44

标签: oracle java-ee jpa eclipselink

由于Oracle中VARCHAR2类型的限制,即其大小限制为4000字节,我想对某个实体中的列使用CLOB类型。因此,在阅读文档后,我以这种方式在JPA实体中声明了该字段:

@Column
@Lob
private String log;

我坚持使用此实体没有任何问题,但当我尝试使用简单的SELECT m FROM Meeting m检索它时,EclipseLink会抱怨无法将类型oracle.sql.CLOB转换为java.lang.String }:

  

javax.persistence.PersistenceException:异常[EclipseLink-3001]   (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b):   org.eclipse.persistence.exceptions.ConversionException异常   描述:类[oracle.sql.CLOB@e9fbb9],类[class   oracle.sql.CLOB],无法转换为[class java.lang.String] 。   内部异常:java.lang.IllegalStateException:此Web   容器尚未启动

我正在使用Eclipselink 2.5.1作为我的JPA实现。数据库是Oracle 10g(10.2.0.3.0),我使用ojdbc6.jar作为驱动程序

1 个答案:

答案 0 :(得分:2)

您是否指定了要使用的目标数据库平台?有关信息,请参阅Specifying the Database for an ApplicationJava Persistence API (JPA) Extensions Reference for EclipseLink, Release 2.4。如果未设置,请尝试将其设置为Oracle10。