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.
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.
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 à