JPA - Gespeicherte Enums gelöscht

miketech

Bekanntes Mitglied
Hallo zusammen,

ich habe folgende Situation: Ich habe eine Entity, die mittels JPA in einer Datenbank gespeichert wird. Hierbei wird auch ein Enum gespeichert:

Code:
	@Enumerated(EnumType.STRING)
	private SemanticsType semanticsType;

Klappt soweit auch wunderbar. Allerdings habe ich einige Änderungen an dem Enum vorgenommen und bspw. ein Literal gelöscht. Jetzt schlägt natürlich meine Abfrage fehl, weil er das Feld nicht einem Enum Literal zuordnen kann.

Wie gehe ich am besten vor? Ich würde gerne nicht zutreffende Werte einem Default Enum Literal zuweisen. Geht das irgendwie? Also bspw. mein Enum sieht so aus:

Code:
 public enum SemanticsType {
  A, B, C, UNKNOWN
}

Jetzt lösche ich B und alle bisherigen B sollen bei den Abfragen UNKNOWN zugeordnet werden. Oder sie sollen aus der DB vollständig gelöscht werden. Hat jemand eine Idee, wie ich hier vorgehen könnte?

Gruß

Mike
 
N

nillehammer

Gast
Von Pseudowerten für "nicht gesetzt" halte ich nicht so viel. Dafür ist NULL da. Ich würde die Datenbankbereinigung händisch mit einem SQL-Statement machen, ganz grob so zum NULL-Setzen
SQL:
UPDATE tabelle SET semanticsType = NULL
WHERE semanticsType NOT IN (A, B, C)
Oder so zum Löschen des kompletten Datensatzes:
SQL:
DELETE FROM tabelle
WHERE semanticsType NOT IN (A, B, C)
 
Zuletzt bearbeitet von einem Moderator:

ARadauer

Top Contributor
Ich würd auch die Datensätze in der Datenbank anpassen...
Wenn die DB bereits beim Kunden ist, bieten sich systeme wie liquibase an umd die DB bei einem neuen Release entsprechend anzupassen...
 

miketech

Bekanntes Mitglied
Hi,

super, danke! Das hilft mir sehr. Dann mache ich es so. D.h. wenn die Exception auftritt, prüfe ich die DB auf falsche Werte und setze sie auf Null.

Mike
 

Ähnliche Java Themen


Oben