我真的找不到一个很好的枚举JDBC映射示例。 枚举实际上是由JDBC支持的吗?
我正在使用MySQL。我有一个枚举列,并希望映射到一些Java枚举。
答案 0 :(得分:26)
JDBC不支持枚举。
你可以将字符串转换为枚举,所以如果你有一个Java枚举,你可以做类似的事情
MyEnum enumVal = MyEnum.valueOf(rs.getString("EnumColumn"));
你必须保持你的java enum和mysql枚举同步。如果没有来自字符串的映射,MyEnum.valueOf()可以抛出IllegalArgumentException,如果从db获得空值,则抛出NullPointerException。
答案 1 :(得分:1)
以下是一些用于将JDBC值转换为Java枚举的通用解决方案。
param = Enum.valueOf((Class<? extends Enum>)dbField.getField().getType(), (String) param);
其中param是db中字段的值,dbField是java.reflect.util.Field,将值放在哪里