2014-03-13 44 views
0

我的工作中,我有一个类具有这种属性的一个项目:CLOB在ORACLE(JPA的,的EclipseLink)不节能

@Column(name="XMLDATA", columnDefinition="CLOB NOT NULL") @Lob @Basic(fetch=FetchType.LAZY) 
@Getter @Setter private String _xmlData; 

在数据库中,列类型,它的属性是CLOB 。

我在使用Oracle数据库(11gR2),JPA和eclipselink作为JPA Provider的weblogic 11gR1(10.3.5)上运行应用程序。我遇到的问题是每次我在数据库上保存注册表时,clob是唯一没有保存的字段。

但是,如果我不把@lob注释,那么它工作正常。

在日志中,我可以看到它首先使用“插入”语句插入除clob之外的所有数据,然后使用“select for update”语句插入clob数据,不知道这可能是问题的一部分。

谢谢。

回答

1

我搜索很多关于这个答案,直到我意识到,如果你正在使用的EclipseLink,在至少2.5.2版本,你不必使用“@Column(name =”XMLDATA“,列定义=“CLOB NOT NULL”)@Lob @Basic(fetch = FetchType.LAZY)“。只需执行以下操作:

@Column(name = "XML_DATA") 
private String _xmlData; 

EclipseLink将知道如何处理CLOB列。

2

对于斑点(JPA +甲骨文),你必须指定的EclipseLink的下列属性的正确管理:

属性名=“eclipselink.target数据库” 值=“org.eclipse.persistence.platform .database.oracle.Oracle11Platform”

看来,JPA有时无法检测到Oracle数据库平台的正确版本

+0

谢谢,它的工作!你太棒了。 – JSP749