2012-04-20 160 views
0

我意识到我错过了一些明显的东西。不知道它是什么,希望有人帮助我看看我没有看到什么。Hibernate映射持久枚举字符串

我的公司从映射文件开始,生成模式和java文件。

我想弄清楚如何映射。我有一列的表,可以在有限数量的字符串只有1: “DOES_NOT_EXIST”,“新,INITIATILIZE”,“跑步”,“TEARDOWN”

TABLE STATE_MACHINE 
    .... 
    STATE VARCHAR2(32) 
..... 


public enum StatEnum { 
    DOES_NOT_EXIST, NEW,INITIATILIZE, RUNNING, TEARDOWN 
} 

我们想要做的是什么沿

StateMachine machine = new StateMechine(); 
machine.state=StatEnum.NEW; 
.... 
Persistance.save(machine) 

问题线的东西是我收到“无法提交事务:无法执行JDBC批处理更新:ORA-00932:不一致的数据类型:预期BINARY得到了NUMBER”

我觉得HBM映射文件应该是01行的东西 com.foo.StateEnum

可以将某些点我在一些资料,做我想做的事情。

谢谢你帮我学习......

+1

你需要给我们更多的信息。请说明StateEnum和使用它的类是如何注释的。请仅包含相关字段,包括ID字段。 – 2012-04-23 16:58:44

回答

0

我结束了创建实现EnhancedUserType和ParameterizedType类。

在实现上述类的包中,我放置了我的枚举类。

我的Hibernate XML已经

<property name="state" column="state"> 
     <meta attribute="use-in-tostring">true</meta> 
     <meta attribute="field-description">state types</meta> 
     <type name="com.....h.core.domain.usertype.MyStrEnumUserType"> 
      <param name="enumClassname">com.......core.domain.usertype.StateTypeEnum</param> 
     </type> 
    </property>