Überwintern Pflanzen clob-Werte seltsam
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.
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.