我正在做一个项目,在这个项目中,我有一个带有这个属性的类:
@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列。