我可以将Play配置为使用mysql枚举而不是整数吗?
我的模型包含一个枚举,它由JPA映射到我的mysql数据库的int
列。
mysql有一个本机enum
类型,使用起来会更方便。
如何配置JPA以使用此类型?
@Entity public class User extends Model { public enum Role { User, Moderator, Admin, } public Role role; }
enum AFAIK没有内置的支持,但也许你可以尝试这个解决方法(我从未测试过它):
@Entity public class User extends Model { public enum Role { User, Moderator, Admin, } @Enumerated(EnumType.STRING) @Column(columnDefinition = "ENUM('User', 'Moderator', 'Admin')") public Role role; }
您可以使用EnumType.STRING将值作为String存储在数据库中。
但是使用原生ENUM要求你使用@Column注释来定义columnDefinition,你需要在那里对所有角色进行编码,你知道吗? 在这里重复。
- 在执行JPA查询时获取NoSuchMethodError:javax.persistence.Table.indexes()
- jpa独立自定义类型映射/ javax.persistence.x替代org.hibernate.annotations.Type和org.hibernate.annotations.TypeDef
- 为什么Hibernate默认设置动态insert = false
- Maven + SLF4J:使用需要两个不同SLF4J版本的两个不同依赖项时版本冲突
- 如何使用JPA / hibernate创建索引,并使用mappedsupperclass中的字段和来自具体实体的字段
- 我可以在Hibernate管理的表中添加“ON DELETE CASCADE”吗?
- 使用Hibernate / Spring生成数据库更新脚本
- 使用HQL进行Hibernate分页
- Hibernate多态查询