2014-10-29 173 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