2014-10-29 144 views
0

我目前使用Hibernate和MySql。 我試圖映射一個枚舉類型,根據幾個例子看起來非常簡單。休眠枚舉映射不創建mysql枚舉

但是,生成的列包含一個VARCHAR(255),而不是像預期的枚舉類型。

下面是簡單的枚舉類。

public enum Gender { 
    MALE, 
    FEMALE 
} 

這裏的註釋

@Enumerated(EnumType.STRING) 
@Column(name = "gender") 
public Gender getGender() { 
    return gender; 
} 

這裏是一個的從這個

| gender | varchar(255) | NO |  | NULL |    | 

產生我看不出爲什麼類型爲字符串,而不是一個枚舉領域。 我試着將Enum類型改爲Ordinal,但後來我只是得到一個Integer而不是一個字符串,仍然沒有枚舉。

任何幫助,將不勝感激。

回答

1

我不認爲這是可能的,因爲ENUM不是標準的SQL數據類型。默認情況下@Enumerated被映射爲整數,如果EnumType.STRING被使用,則列被映射到一個字符串。

+0

Enum是受支持的MySQL數據類型 - 在此處用於示例數據庫。本文最近更新 - 也鏈接到MySQL文檔。 https://www3.ntu.edu.sg/home/ehchua/programming/sql/SampleDatabases.html此外 - 這個工程http://stackoverflow.com/questions/1076604/mysql-enum-with-hibernate?rq=1 – DtechNet 2015-10-06 05:28:46