2010-07-01 20 views
20

Ich kann wirklich kein nettes Enum JDBC Mapping-Beispiel finden. Wird enum tatsächlich von JDBC unterstützt?Werden Enums von JDBC unterstützt?

Ich arbeite mit MySQL. Ich habe eine enum-Spalte und möchte Java-enum zuordnen.

Antwort

23

JDBC unterstützt keine Enums.

Sie können allerdings einen String in einen Enum umwandeln, wenn Sie also eine Java Enum haben, können Sie so etwas wie

MyEnum enumVal = MyEnum.valueOf(rs.getString("EnumColumn")); 

Sie behalten Ihre Java-Enumeration und MySQL Enum obwohl synchron zu tun haben werden. MyEnum.valueOf() kann IllegalArgumentException auslösen, wenn keine Zuordnung aus der Zeichenfolge besteht, oder NullPointerException, wenn Sie einen Nullwert von der Datenbank erhalten.

1

Hier sind einige generische Lösungen, die beim Konvertieren von JDBC-Werten in Java-Enums verwendet werden.

param = Enum.valueOf((Class<? extends Enum>)dbField.getField().getType(), (String) param); 

wo param der Wert des Feldes in der DB ist, und das ist die dbField java.reflect.util.Field, wobei der Wert setzen