2010-07-01 95 views
20

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

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

回答

23

JDBC不支持枚举。

您可以将字符串转换为一个枚举的,所以如果你有一个Java枚举,你可以这样做

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

你必须保持你的java枚举和mysql枚举同步虽然。如果没有来自字符串的映射,MyEnum.valueOf()可以抛出IllegalArgumentException,如果从数据库中获得空值,则可以抛出NullPointerException。

1

下面是一些通用的解决方案,用于将JDBC值转换为Java枚举。

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

其中param是字段的分贝值,并且dbField是java.reflect.util.Field,在那里把该值到