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, не знам дали това може да е част от проблема.

Благодаря ти.


person JSP749    schedule 13.03.2014    source източник


Отговори (2)


Търсих много този отговор, докато разбрах, че ако използвате 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.

person tinocoam    schedule 08.12.2014

За правилното управление на петна (JPA + Oracle) трябва да посочите следните свойства на eclipselink:

име на свойство = "eclipselink.target-database" стойност = "org.eclipse.persistence.platform.database.oracle.Oracle11Platform"

Изглежда, че JPA понякога не може да открие правилната версия на платформата Oracle Database

person Azimuts    schedule 13.03.2014