T
tuxedo
Gast
Hallo zusammen,
hab mal (wieder) ne JPA Frage:
Wenn ich Entities habe, die nach einem gewissen Muster "Unique" sein müssen, wie handhabe ich da am besten den Versuch doppelte Einträge anzulegen? Klar, da kommt eine Exception. Doch die ist vom Typ
und sagt leider in erster Linie erstmal nix über die Ursache aus. Erst wenn man die darunterliegenden Exceptions sich anschaut entdeckt man: Oh, geht ja gar nicht da es den Eintrag schon gibt.
Parallel dazu spuckt Eclipselink und Hibernate noch ein paar Warnungen aus die sich im Log nicht wirklich gut machen. Die Loglevels entsprechend zu setzen und die Meldungen abzuklemmen ist auch unschön.
Und je nach verwendeter JPA Implementierung (EclipseLink, Hibernate, ...) sehen die darunterliegenden Exceptions anders aus.
Wie mach ich das dann also wenn ich nicht davon ausgehen kann dass eine spezielle JPA Implementierung verwendet wird und so nur die
zur Hilfe heranziehen kann, die mir aber nicht verrät WAS schief gelaufen ist?
Mein Aktueller Ansatz: VOR dem commit eine Abfrage starten und schauen ob es diesen Eintrag schon gibt. Das verhindert die nichtssagende Exception und die Warn-/Error-Meldungen der JPA Implementierungen aus den untiefen der Implementierung selbst.
Aber den Ansatz finde ich etwas "unschön" und auch recht aufwendig (da ich ja immer erst eine Abfrage starten muss).
Gibts hier ein Pattern oder eine "empfohlene Vorgehensweise"? Wie geht ihr mit dem "Problem" um?
- Alex
hab mal (wieder) ne JPA Frage:
Wenn ich Entities habe, die nach einem gewissen Muster "Unique" sein müssen, wie handhabe ich da am besten den Versuch doppelte Einträge anzulegen? Klar, da kommt eine Exception. Doch die ist vom Typ
Code:
RollbackException
Parallel dazu spuckt Eclipselink und Hibernate noch ein paar Warnungen aus die sich im Log nicht wirklich gut machen. Die Loglevels entsprechend zu setzen und die Meldungen abzuklemmen ist auch unschön.
Und je nach verwendeter JPA Implementierung (EclipseLink, Hibernate, ...) sehen die darunterliegenden Exceptions anders aus.
Wie mach ich das dann also wenn ich nicht davon ausgehen kann dass eine spezielle JPA Implementierung verwendet wird und so nur die
Code:
RollbackException
Mein Aktueller Ansatz: VOR dem commit eine Abfrage starten und schauen ob es diesen Eintrag schon gibt. Das verhindert die nichtssagende Exception und die Warn-/Error-Meldungen der JPA Implementierungen aus den untiefen der Implementierung selbst.
Aber den Ansatz finde ich etwas "unschön" und auch recht aufwendig (da ich ja immer erst eine Abfrage starten muss).
Gibts hier ein Pattern oder eine "empfohlene Vorgehensweise"? Wie geht ihr mit dem "Problem" um?
- Alex