2016-04-14 55 views
0

我想映射表的枚举列的实体属性。该配置使用XML。但是,无论何时运行代码,它在验证时都会抛出错误。使用XML配置在Hibernate中映射枚举

以下是我的映射 -

<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="com.sample.employeemanager.pojo.Employee" table="employees"> 

     <property name="gender"> 
      <column name="gender" /> 
      <type name="org.hibernate.type.EnumType"> 
       <param name="enumClass">com.sample.employeemanager.pojo.support.Gender</param> 
      </type> 
     </property> 

    </class> 
</hibernate-mapping> 

我发现,通过谷歌这一解决方案。

而且我得到的错误如下:

Initial SessionFactory creation failed. 
org.hibernate.HibernateException: Wrong column type in employees.employees for column gender. Found: enum, expected: integer 
    at org.hibernate.mapping.Table.validateColumns(Table.java:383) 
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1277) 
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:508) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1760) 
    at com.sample.employeemanager.common.HibernateUtil.buildSessionFactory(HibernateUtil.java:16) 
    at com.sample.employeemanager.common.HibernateUtil.<clinit>(HibernateUtil.java:9) 
    at com.sample.employeemanager.common.EmployeeManager.main(EmployeeManager.java:16) 

性别枚举看上去象下面这样:

public enum Gender { 
    M, F 
} 

请注意,枚举是一个单独的源文件。

你有什么想法可能是什么问题?

回答

0

我认为你必须在类型标记内添加param。

<param name="useNamed">true</param> 

Thnaks, 阿米特库马尔