Могу ли я настроить Play для использования перечислений mysql вместо целых? - PullRequest
2 голосов
/ 03 января 2012

Моя модель содержит перечисление, которое сопоставляется JPA с столбцом int в моей базе данных mysql.

У mysql есть собственный тип enum, который будет удобнее использовать.

Как настроить JPA для использования этого типа?

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

  public Role role;
}

1 Ответ

7 голосов
/ 03 января 2012

Нет встроенной поддержки 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 требуется, чтобы вы определили columnDefinition с помощью аннотации @ Column , которая требует, чтобы все ваши роли были там прописаны, понимаете?Дублирование здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...