Derby/JavaDB EclipseLink und Derby: "Abschneidefehler" bei @Lob

zilti

Bekanntes Mitglied
Ich verwende für eine Java SE-Anwendung EclipseLink und Apache Derby (da OpenJPA so verbuggt ist, dass es unverwendbar ist).
Ich habe ein Feld vom Typ List<Integer>, welches ich mit @Lob annotiert habe.
Nun bekomme ich beim versuchten Speichern der Entity, in dem sich das Feld List<Integer> befindet folgende Fehlermeldung:

Internal Exception: java.sql.SQLDataException: Bei dem Versuch, BLOB '(Binärer Datenwert wird nicht angezeigt.)' auf die Länge 255 zu kürzen, ist ein Abschneidefehler aufgetreten.

Im Internet habe ich leider nichts dazu finden können (verdammte lokalisierte Fehlermeldungen *grr*). Woran könnte das liegen?
 
Anstatt "zu kürzen" könntest du "truncated" als Suchbegriff verwenden 😉

Wie ist das Feld denn in der DB definiert?
 
Hmm jetzt hast du gerade zu dem Zeitpunkt geschrieben, da ich die Lösung doch noch gefunden habe 🙂
In der DB ist es ja laut Fehlermeldung ein BLOB mit der Länge 255 (ist das nicht irgendwie idiotisch kurz?). Und im Code ist es eine List<Integer>.
Naja, die Lösung ist nun, dass man das mit @ElementCollection annotieren muss. Ich hätte mir die Annotationen in der JPA2-Spezifikation wohl doch etwas gründlicher anschauen müssen... Ist mir jetzt gerade etwas peinlich 😉
Gefunden habe ich das jetzt per Google-Suche nach "EclipseLink @Lob java.util.List":
Introduction, Using, Developing Java Persistence API (JPA) 2.0 using EclipseLink, Derby, MySql and Eclipse | Rational Java
Nur, falls sich mal jemand mit demselben Problem hierher verirren sollte 😉

Danke trotzdem!
 

Neue Themen


Zurück
Oben