Les énumérations sont-elles supportées par JDBC?

Je ne peux vraiment pas trouver un bon exemple de mappage JDBC enum. Enum est-il réellement supporté par JDBC?

Je travaille avec MySQL. J'ai une colonne enum,et je voudrais mapper à une énumération Java.

21
demandé sur Jonas 2010-07-01 11:55:37

2 réponses

JDBC ne prend pas en charge les énumérations.

Vous pouvez convertir une chaîne en une énumération, donc si vous avez une énumération Java, vous pouvez faire quelque chose comme

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

Vous devrez garder votre enum java et votre enum mysql synchronisés. MyEnum.valueOf () peut lancer IllegalArgumentException s'il n'y a pas de mappage de la chaîne, ou NullPointerException si vous obtenez une valeur null de la base de données.

24
répondu nos 2010-07-01 08:06:33

Voici une solution générique utilisée pour convertir les valeurs JDBC en énumérations Java.

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

Où param est la valeur du champ dans la base de données, et le dbField est le java.refléter.util.Champ, où mettre la valeur à

1
répondu Roman 2010-07-07 07:51:50