JDBC 支持枚举吗?

发布于 2024-09-07 23:23:27 字数 92 浏览 2 评论 0原文

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

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

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

山田美奈子 2024-09-14 23:23:27

JDBC 不支持枚举。

不过,您可以将字符串转换为枚举,因此,如果您有 Java 枚举,您可以执行类似的操作,

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

但您必须保持 java 枚举和 mysql 枚举同步。如果没有来自字符串的映射,MyEnum.valueOf() 可能会抛出 IllegalArgumentException;如果从数据库获取空值,则可能会抛出 NullPointerException。

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.

淑女气质 2024-09-14 23:23:27

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

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

其中 param 是 db 中字段的值, dbField 是 java.reflect.util.Field ,将值放在哪里

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文