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

时间:2012-01-03 08:45:51

标签: java hibernate jpa playframework

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

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

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

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

  public Role role;
}

1 个答案:

答案 0 :(得分:7)

没有内置支持枚举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,你需要在那里对所有角色进行编码,你知道吗?在这里重复。