2010-07-01 11 views
20

Non riesco davvero a trovare un buon esempio di mappatura JDBC enum. L'enum è effettivamente supportato da JDBC?Le enumerazioni sono supportate da JDBC?

Sto lavorando con MySQL. Ho una colonna enum e vorrei mappare a qualche enum Java.

risposta

23

JDBC non supporta enumerazioni.

È possibile convertire una stringa in un enum, però, quindi se avete un enum Java si può fare qualcosa di simile

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

Dovrete mantenere la vostra enum Java e MySQL enum in sincronia però. MyEnum.valueOf() può lanciare IllegalArgumentException se non ci sono mappature dalla stringa, o NullPointerException se si ottiene un valore nullo dal db.

1

Ecco alcune soluzioni generiche che stavano utilizzando per convertire i valori JDBC in enumerazioni Java.

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

dove param è il valore del campo nel db, e la dbField è il java.reflect.util.Field, dove mettere il valore

Problemi correlati