2013-06-24 10 views
5

Używam JPA 2.1. Chcę generować kolumny mysql enum typu: gender enum('male','female'). Moja klasa Enum jestNie można wygenerować typu wyliczenia w MySql z jednostki JPA

public enum Gender { 
    MALE, 
    FEMALE 
} 

W WZP klasy podmiotu

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

I

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

Czy istnieje jakiś sposób, aby wygenerować typu enum kolumny w MySQL?

+1

Możesz spróbować tego spróbować - http://stackoverflow.com/a/8710305/738746 –

Odpowiedz

6

użyć poniższy kod:

public enum Gender { 
    MALE, FEMALE; 
} 

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

To nie tylko się kompiluje, ale także miesza "Gender" i " Rola "i dlatego nie odpowiada na pytanie, ani nie wyjaśnia niczego. Dlaczego ludzie to głosowali? –

+0

Chociaż przykład jest złożony razem niedbale, jest to jedyna odpowiedź, którą udało mi się znaleźć, która pokazuje, jak zamapować wyliczenie na rzeczywisty typ SQL ENUM z JPA, w przeciwieństwie do przechowywania wartości wyliczeniowych w niebezpiecznym numerze lub typie ciągu . – UncleBob

+0

Czy jest zgodny z ANUM typu ANUM? Czy enum jest zdefiniowany w standardowym SQL lub tylko dla MySQL? W takim przypadku: czy to nie jest rozwiązanie łączące klasę '@ Entity' (przypisuję' Person' lub coś podobnego) z tabelą DB (i DBMS)? –

0

Jeśli chcesz użyć wartości wyliczenia napisów w bazie danych, typ kolumny musi być varchar na bazie serwera bazy danych. W rzeczywistości nie jestem jasne I want to genrate mysql enum type column. Ale, jeśli u chcieliby, aby wyświetlić wyjście MALE do male odniesienie jak poniżej:

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

    private String label; 

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

    public String getLabel() { 
     return label; 
    } 
} 

Test calss

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

wyjściowa: mężczyzna

+0

mysql ma typ danych "enum": http://dev.mysql.com/doc/refman/5.7/en/enum.html – Creature

Powiązane problemy