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

rip*_*234 2 java hibernate jpa playframework

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

mysql有一个本机enum类型,使用起来会更方便.

如何配置JPA以使用此类型?

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

  public Role role;
}
Run Code Online (Sandbox Code Playgroud)

小智 7

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;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用EnumType.STRING将值作为String存储在数据库中.
但是使用原生ENUM需要你使用@Column注释来定义columnDefinition ,你需要在那里对所有角色进行编码,你知道吗?在这里重复.