java - 如何在 Hibernate @Entity 类中使​​用 Enum 成员?

标签 java mysql hibernate enums

我有以下类(class):

@Entity
class User
{
   @Id @GeneratedValue
   private long id;

   private Language lang; //Language is an Enum of all languages

   private Role role; //Role is an enum of user roles like admin, super-admin, etc

}

我的问题是:

1) 我应该如何设计数据库列以使用枚举类型?我应该使用 varchar 还是任何其他类型? (我使用的是MySQL)

2)这个类可以开箱即用,还是我需要做任何额外的事情才能使其与枚举一起使用?我需要能够读取和写入枚举值(例如用户可以更改他的语言)

最佳答案

您可以使用 VARCHAR 类型,并在 @Entity 类中使用 @Enumerated@ 标记枚举成员列注释(指向枚举成员将绑定(bind)到哪个数据库表列)。

例如:

@Column(columnDefinition = "enum('BULGARIA','UNITED KINGDOM')")
@Enumerated(EnumType.STRING)
private Language lang;

@Column(columnDefinition = "enum('ADMIN','USER')")
@Enumerated(EnumType.STRING)
private Role role;

关于java - 如何在 Hibernate @Entity 类中使​​用 Enum 成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042903/

相关文章:

java - 我有 hibernate 错误

mysql - OSGi 和 Hibernate - 不合适的驱动程序

java - 如何修复 security.xml 文件

php - 使用 mysql rand() 在 ajax 调用上显示唯一图像

mysql - Hibernate、c3p0 和 Mysql、spring

MYSQL-获取不同长度的子字符串

javascript - 有没有类似websocket但不需要像node这样的框架的东西?

java - 将 map 复制到 Elasticsearch 更新文档请求中

java - android Map错误膨胀类 fragment

java - Java 中的慢速多线程 - Air Percussion 项目