2012-04-20 193 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>