Hallo,
ich versuche momentan folgendes Klassendiagramm mit JPA umzusetzen:
Das Ganze soll auf Postgres basieren, backend ist Hibernate.
Problem ist nun, dass bei jedem insert einer PriorityList eine ConstraintViolation Exception fliegt - und ich habe keine Ahnung warum ... Verwendet man die Hypersonic_in_memory Datenbank läuft das Ganze einwandfrei und ohne Fehler.
Hier die Links zu den einzelnen Dateien:
persistence.xmlDrawProcedure.javaPriorityList.javaProcedure.javaTicket.javaDas Problem tritt auf, wenn man eine PriorityList instanziiert, eine bereits persistierte DrawProcedure injiziert und die PriorityList dann zu persistieren versucht. Setzt man das procedure Attribut explizit auf
null, dann läuft der Code ebenfalls einwandfrei.
Der per log4j gemeldete Fehler sieht so aus:
Code:
DEBUG - JDBCExceptionReporter - could not insert: [hsa.awp.campaign.model.PriorityList] [insert into "prioritylist" (PROCEDURE_ID, "id") values (?, ?)]
org.postgresql.util.PSQLException: ERROR: insert or update on table "prioritylist" violates foreign key constraint "fke8ddb842ecbfd49f"
Detail: Key (procedure_id)=(1) is not present in table "drawprocedure".
Prüft man nun, ob genau diese Procedure mit id=1 in der Datenbank steht, so stellt man fest, dass der Datensatz vorhanden ist - nur warum wird er nicht von Hibernate gefunden?. Lässt man nochmal explizit einen findById auf die DrawProcedure laufen, so wird diese ebenfalls wunderbar gefunden.
Genauso steht in der Datenbank die richtige foreign-key Beziehung von PriorityList zu DrawProcedure: FOREIGN KEY (procedure_id) REFERENCES drawprocedure(id)
Hat irgendjemand eine Idee, an was das liegen kann? Ich wäre wirklich um jede Idee dankbar ...
Vielen Dank,
Matthias