CLOB不保存在ORACLE(与JPA, eclipselink)



我正在做一个项目,在这个项目中,我有一个带有这个属性的类:

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

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

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

但是如果我不放@lob注释,那么它工作得很好。

在日志中,我可以看到,首先它使用"插入"句子插入除clob之外的所有数据,然后它使用"选择更新"句子插入clob数据,我不知道这是否可能是问题的一部分。

谢谢。

为了正确管理blob (JPA + Oracle),您必须指定eclipselink的以下属性:

属性名= " eclipselink.target-database "值= " org.eclipse.persistence.platform.database.oracle.Oracle11Platform "

似乎JPA有时无法检测Oracle数据库平台的正确版本

我已经搜索了很多这个答案,直到我意识到,如果你正在使用EclipseLink,至少2.5.2版本,你不必使用"@Column(name="XMLDATA", columnDefinition="CLOB NOT NULL") @Lob @Basic(fetch=FetchType.LAZY)"。只需这样做:

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

EclipseLink将知道如何处理CLOB列。

最新更新