CLOB lenght Probleme unter verschiedenen Datenbanken (eclispelink)

xerberuz

Bekanntes Mitglied
Hi,

ich versuche einen langen Text in einer Datenbank zu persistieren. Leider bekomme ich es immer nur unter bestimmten Datenbanken zum laufen.

Getestet hab ich folgendes mit einem String der 500000 Zeichen lang ist.

Definiere ich die Spalte so:
Java:
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "DSGN_CNTNT", columnDefinition = "CLOB(600000)")
private String designContent;
funtioniert es unter DB2 und DERBY.

Definiere ich die Spalte so:

Java:
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "DSGN_CNTNT")
private String designContent;
funktioniert es mit pgsql und oracle.


Gibt es eine schöne Lösung für das Problem?
 
M

maki

Gast
Gibt es eine schöne Lösung für das Problem?
IMHO nicht wirklich, ähnlich ist es wenn Sequencen als IDs definiert werden, manche DBs unterstützen diese schlicht nicht.

Da wäre es imho am besten eine orm.xml anzulegen und diese je nach DB anzupassen, so muss wenigstens der Javaquellcode nicht mehr angepasst werden.
 

xerberuz

Bekanntes Mitglied
Nach langem suchen hab ich eine funktionierende Lösung gefunden. Schön ist es zwar nicht aber man kann die definition mit einem DescriptorCustomizer anpassen.

Java:
 final DatabaseMapping mappingForAttributeName = descriptor.getMappingForAttributeName("designContent");
mappingForAttributeName.getField().setColumnDefinition("CLOB(600000)");

Ich hoffe da wird noch nachgebessert. Schön wäre es das culumnDefinition Feld für jede Datenbank extra konfigurieren zu können. Oder wenn die @Lob annotation eine möglichkeite hätte dir Größe anzugeben.

Introduction to Descriptors (ELUG) - Eclipsepedia
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben