java - 如何读取 ENUM 类型的列定义并将其转换为数组\列表

标签 java hibernate jpa enums

我有一个表,其中一列类型为 ENUM('val1', 'val2', 'val3')

create table tab1{
  col1 varchar(20),
  col2 varchar(20),
  col3 ENUM('val1', 'val2', 'val3'),
  col4 varchar(20)
}

现在,在 Java 中,我正在使用 JPA 并希望读取列定义以将 col3 枚举值转换为数组\列表。 (这样我就不需要对 emum 元素进行硬编码,表定义的更改可以反射(reflect)在代码中而无需任何代码更改)。

这可能吗?如果是,我该怎么做?

最佳答案

没有称为 ENUM 的类型,ENUM 是一个字符串对象,其值是从创建表时在列规范中明确枚举的允许值列表中选择的,对于表,只需将其设置为字符串并添加它在某个集合内的约束。

CREATE TABLE tab1(
col1 VARCHAR(20),
col2 VARCHAR(20),
col3 VARCHAR(10),
col4 VARCHAR(20),
CONSTRAINT cons_tab1_col3 CHECK (col3 IN ('val1', 'val2', 'val3')));    

创建一个名为 yourEnumName 的枚举:

public enum yourEnumName{
    val1,
    val2,
    val3
}

例如,在您的实体中添加一个代表您的枚举的属性

@Enumerated(EnumType.STRING)
private yourEnumName enumName;

希望对你有帮助。

关于java - 如何读取 ENUM 类型的列定义并将其转换为数组\列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16009237/

相关文章:

Java,数组的setter方法。两类

java - 使用 spring 和 tomcat 静态编织 eclipselink jpa

java - 颜色未设置到工作簿

java - 在 Java 或 Python 中使用正则表达式灵活解析文本

java - 如何优化我编写的以下java代码来生成下一个回文数

java - 在 Spring MVC 中显示图像

java - JPA 2 - 如何使用 Spring Data JPA 构建具有主键也是外键的实体?

java - 如何在 Spring 管理 hibernate session

JPA 级联持续错误

jpa - 为什么需要JPA依赖关系才能运行飞行路线迁移