2 votes

Puis-je configurer Play pour qu'il utilise les mysql enums au lieu des ints ?

Mon modèle contient une énumération, qui est mappée par JPA dans un fichier int dans ma base de données mysql.

mysql dispose d'une fonction native enum qui serait plus pratique à utiliser.

Comment puis-je configurer JPA pour utiliser ce type ?

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

  public Role role;
}

7voto

sverdianto Points 126

Il n'y a pas de support intégré pour les enum AFAIK, mais vous pouvez peut-être essayer ceci comme solution de contournement (je ne l'ai jamais testé) :

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

    @Enumerated(EnumType.STRING)
    @Column(columnDefinition = "ENUM('User', 'Moderator', 'Admin')")
    public Role role;
}

Vous pouvez utiliser EnumType.STRING qui stockera la valeur sous forme de chaîne dans la base de données.
Mais l'utilisation de l'ENUM natif exige que vous définissiez le columnDefinition à l'aide de @Colonne qui nécessite que tous les rôles soient codés ici, vous voyez ? une duplication ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X