Reputation: 8231
I really can't find a nice enum JDBC mapping example. Is enum actually supported by JDBC?
I am working with MySQL. I have an enum column, and would like to map to some Java enum.
Upvotes: 31
Views: 32120
Reputation: 8231
Here is some generic solution were are using in converting JDBC values to Java enums.
param = Enum.valueOf((Class<? extends Enum>)dbField.getField().getType(), (String) param);
where param is the value of the field in the db , and the dbField is the java.reflect.util.Field , where to put the value to
Upvotes: 2
Reputation: 229088
JDBC does not support enums.
You can convert a string to an enum though, so if you have a Java enum you can do something like
MyEnum enumVal = MyEnum.valueOf(rs.getString("EnumColumn"));
You'll have to keep your java enum and mysql enum in sync though. MyEnum.valueOf() can throw IllegalArgumentException if there's no mapping from the string, or NullPointerException if you get a null value from the db.
Upvotes: 41