2013-06-24 10 views
5

Sto utilizzando JPA 2.1. Voglio genrare la colonna del tipo mysql enum come: gender enum('male','female'). La mia classe Enum èImpossibile generare il tipo enum in MySql dall'entità JPA

public enum Gender { 
    MALE, 
    FEMALE 
} 

In JPA classe di entità

@Enumerated 
private Gender gender;//generate int type column 

E

@Enumerated(EnumType.STRING) 
private Gender gender; //generate varchar type column. 

Esiste un modo per generare enum colonna di tipo in MySQL?

+1

Si potrebbe voler provare questo - http://stackoverflow.com/a/8710305/738746 –

risposta

6

Usa codice seguente:

public enum Gender { 
    MALE, FEMALE; 
} 

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

Non solo non si compila, ma si mescola anche 'Gender' e' Ruolo' e quindi non risponde alla domanda, né spiega nulla. Perché la gente dovrebbe revocare questo? –

+0

Mentre l'esempio è messo insieme in modo negligente, questa è l'unica risposta che sono riuscito a trovare che mostra come mappare un enum a un tipo di ENUM SQL reale con JPA, invece di archiviare i valori di enum in un numero non sicuro o in un tipo di stringa . – UncleBob

+0

È compatibile ANSI di tipo enum? Enum è definito in SQL standard o è solo per MySQL? In tal caso: questa soluzione non combina la classe '@ Entity' (I asume' Person' o qualcosa di simile) con la tabella DB (e il DBMS)? –

0

Se si desidera utilizzare il valore di enumerazione delle stringhe nel database, il tipo di colonna deve essere varchar base sul server di database. In realtà, non sono chiaro I want to genrate mysql enum type column. Ma, se u desidera visualizzare l'output MALE a male, riferimento come qui sotto:

public enum Gender { 
    FEMALE("female"), MALE("male"); 

    private String label; 

    private Gender(String label) { 
     this.label = label; 
    } 

    public String getLabel() { 
     return label; 
    } 
} 

prova calss

public static void main(String args[]) { 
    System.out.println(Gender.MALE) 
} 

uscita: maschio

+0

mysql ha un tipo di dati "enum": http://dev.mysql.com/doc/refman/5.7/en/enum.html – Creature

Problemi correlati