Mit EclipseLink JPA zu binden Strings größer als 255 Zeichen
Habe ich geerbt, ein Projekt, das verwendet EclipseLink JPA zu bestehen Objekte in eine beliebige SQL-Datenbank. Derzeit kommt es mit einem lokalen Derby DB Vertrieb. Bei einigen tests fand ich heraus, dass das Programm löst folgende Ausnahme:
012-08-03 10:21:11.357--UnitOfWork(32349505)--Ausnahme
[EclipseLink-4002] (Eclipse Persistence Services -
2.3.2.v20111125-r10461): org.eclipse.die Persistenz.Ausnahmen.DatabaseException Internal
Ausnahme: java.sql.SQLDataException: Ein abschneiden der Fehler war
aufgetreten versuchen, zu verkleinern VARCHAR 'einige unbedingt wirklich lange text' auf die Länge 255. Error Code: 20000
Offensichtlich VARCHAR nicht (in der Regel) nicht geeignet für die Speicherung von Strings mit mehr als 255 Zeichen, aber ich finde nicht das code-fragment, in dem die Objekte variabel ist ausdrücklich die Zuweisung zu einem VARCHAR-Feld. Ich verstehe, dass JPA oder EclipseLink weist diese automatisch für Sie, so meine Frage, wo ich nicht finden konnte, eine einfache Antwort und doch, ist:
Wie kann ich sicherstellen, dass EclipseLink /JPA speichert Zeichenfolgen mit mehr als 255 Zeichen?
Cheers
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie beschriften Sie das Eigentum, so wird es beibehalten, wie
Clob
. Verwenden@Lob
; fürString
s diese standardmäßigClob
. Sehen hier für die Dokumentation. Natürlich müssen Sie sicherstellen, dass die Datenbank-Spalte-Typ korrekt ist (also nichtVARCHAR
), wenn Sie die Datenbank manuell erstellen.Zeige ich Euch die Daten geben, die binden, String mit mehr als 255 Zeichen. Siehe dieses;
Java-Typ byte[], java.lang.Byte[], java.sql.Clob
Java DB, Derby /CloudScape - CLOB(64000)
Oracle - LANGE
DB2 - CLOB(64000)
Sybase - TEXT
MSSQL - TEXT
MySQL - TEXT(64000)
In vielen Umgebungen @Spalte vom Typ "String" hat limit größer als 255 sein, zum Beispiel 4 kB.
Sie müssen verwenden 'Länge' ändern default 255
@Column(length=1024)
String Muster;