JPA Entity-Struktur Cache

Hallo,

ich probiere mich gerade mit JPA und WildFly. Beim Erstellen einer Entity habe ich den Fehler gemacht, das ich zwei Entity-Klassen mit dem gleichen Tabellennamen annotiert habe (@Table(name=“meinTabellenName”)). Den Fehler habe ich nach dem ersten Start auch gleich wieder korrigiert, aber der WildFly oder was auch immer hat sich die falsche Struktur gemerkt. Von daher gehe ich davon aus, das der WilfFly die Entity-Struktur gecached hat.

Ich habe bereits versucht den Cache mit folgenden Befehlen zu leeren, aber ohne Erfolg.

em.clear();

em.getEntityManagerFactory().getCache().evictAll();

Was muss man nach tun, um den JPA-Cache für die Entity zu leeren? Aus reiner Verzeifelung habe ich die zweite Entity-Klasse, welche ich falsch annotiert hatte, gelöscht. Aber dennoch zieht der WildFly beim Ausführen meines Deployments die Struktur des gelöschten Entitys herran :frowning:

Kann mir einer helfen, den blöden Cache zu leeren?
Danke!

Ich bin mir nicht ganz sicher, was Du mit gecached meinst. Hast Du den Wildfly neu gestartet? Wie sieht genau die Fehlermeldung aus?

Ich bekomme eine Fehlermeldung mit dem Code 1004 Das ein Feld nicht befüllt werden kann. Dieses Feld existiert aber nicht in der Tabelle die befüllt werden soll. Das besagte Feld hat allerdings in der zweiten, inzwischen gelöschten, Tabelle existiert.
Deswegen hatte ich gedacht, das die Struktur zwischengespeichert wurde. Ich bin noch ein blutiger Anfänger was JPA angeht. Von daher kenne ich mich leider noch nicht so aus.

Den WildFly habe ich mehrfach neu gestartet.

1004 sagt mir so jetzt nichts. Hast Du einen Stacktrace?

hast du eine neue DB angelegt bzw. die alte entfernt?

Ich habe mir ein neues Schema in der DB angelegt und mein Programm noch mal gegen das neue Schema laufen lassen. In dem neuen Schema hat alles super funktioniert. Entsprechend habe ich noch einmal die gesamte Tabellenstruktur untersucht. Dabei musste ich feststellen, das mein Programm die Struktur verändert hatte, als ich eine Tabelle falsch annotiert hatte.

In dem falsch annotierten Entity war das besagte Feld mit @Column(name = "HASH", nullable = false) annotiert. Dies hat in Verbindung mit der falschen Tabellenzuordnung über @Table(name = "HIST") dazu geführt, das in der DB zur Tabelle HIST ein NOT NULL Constraint auf ein Feld erzeugt wurde, welches es in der Tabelle nicht gibt. (wusste garnicht, dass das geht :thinking:)

Nachdem ich das Constrinat entfernt hatte, läuft alles wieder.

Wie kann ich verhindern, das JPA die DB-Datenstruktur verändert?

Das wird beim Wildfly in der entsprechenden Persistence-Unit (persistence.xml) definiert.