# JPA - Gespeicherte Enums gelöscht



## miketech (28. Sep 2012)

Hallo zusammen,

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


```
@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:


```
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


----------



## nillehammer (28. Sep 2012)

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

```
UPDATE tabelle SET semanticsType = NULL
WHERE semanticsType NOT IN (A, B, C)
```
Oder so zum Löschen des kompletten Datensatzes:

```
DELETE FROM tabelle
WHERE semanticsType NOT IN (A, B, C)
```


----------



## ARadauer (28. Sep 2012)

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 (28. Sep 2012)

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


----------

