JDBC是否支持枚举?

时间:2010-07-01 07:55:38

标签: java jdbc enums

我真的找不到一个很好的枚举JDBC映射示例。 枚举实际上是由JDBC支持的吗?

我正在使用MySQL。我有一个枚举列,并希望映射到一些Java枚举。

2 个答案:

答案 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,将值放在哪里