Frage

Ich habe ein eins-zu-viele-Beziehung zwischen zwei Tabellen.Die Tabelle enthält viele eine clob-Spalte.Die clob-Spalte sieht im Ruhezustand:

@CollectionOfElements(fetch = EAGER)
@JoinTable(name = NOTE_JOIN_TABLE, joinColumns = @JoinColumn(name = "note"))
@Column(name = "substitution")
@IndexColumn(name = "listIndex", base = 0)
@Lob
private List<String> substitutions;

Also im Grunde, ich kann einen Hinweis bei einigen subsitutions, sagen "foo" und "fizzbuzz".Also in meiner Haupttabelle ich könnte eine Notiz mit der id 4 und in meinem NOTE_JOIN_TABLE Ich hätte zwei Zeilen, "foo" und "fizzbuzz" beide haben eine Beziehung zu der Notiz.

Jedoch, wenn einer von diesen ist eingefügt in die DB die größeren substitution Werte abgeschnitten werden, so lange, wie die kürzeste. So auch in diesem Fall hätte ich "foo" und "fiz" in der DB statt "foo" und "fizzbuzz".

Haben Sie eine Idee, warum dies passiert ist?Ich habe überprüft und bestätigt, dass Sie nicht abgeschnitten irgendwo in unserem code, es ist auf jeden Fall überwintern.

War es hilfreich?

Lösung

Viele JDBC-Treiber, frühe Versionen von Oracle im besonderen, haben Probleme beim einlegen LOBs.Wussten Sie, machen sicher, dass die Abfrage Hibernate feuert, mit den gleichen Parametern, gebunden, arbeitet erfolgreich in Ihrem JDBC-Treiber?

Andere Tipps

LOB/CLOB - Spalte kann nicht groß genug sein.Hibernate hat einige Standard Größen für Spalte LOB/CLOB das sind relativ kleine (kann abhängig db).Sowieso, versuchen Sie etwas wie dieses:

@Lob 
@Column(length=2147483648)

Passen Sie die Länge (in Byte), die auf der Grundlage Ihrer Bedürfnisse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top