小编典典

我可以将Play配置为使用mysql枚举而不是ints吗?

java

我的模型包含一个枚举,它由JPA映射到int我的mysql数据库上的一列。

mysql具有本机enum类型,使用起来会更方便。

如何配置JPA以使用这种类型?

@Entity
public class User extends Model {
  public enum Role {
    User,
    Moderator,
    Admin,
  }

  public Role role;
}

阅读 240

收藏
2020-11-26

共1个答案

小编典典

没有对枚举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
,这需要将所有角色都编码在那里。在这里重复。

2020-11-26