2012-04-20 10 views
0

私は何かが分かりにくいことを実感しました。それが何であるかわからない、someneを助けて私が見ていないものを見るのを助ける。Hibernateマッピングは列挙された文字列を永続させました

私の会社はファイルのマッピングから始まり、スキーマとJavaファイルを生成します。

私はマップする方法を理解しようとしています。 「DOES_NOT_EXIST」、「NEW、INITIATILIZE」、「RUNNING」、「TEARDOWN」

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


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

は、私たちがやりたいことはある:私は、文字列の限られた数にのみ1を持つことができ、カラムを持つテーブルを持っています問題

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

の線に沿って何かを私は受けていている「ORA-00932:::JDBCのバッチ更新を実行できませんでした一貫性のないデータ型を:トランザクションをコミットすることはできません期待進数しまった」

私は思いますHBMマッピングファイルは、01の行に沿ったものでなければなりません com.foo.StateEnum

は、いくつかは、私が何をしようとしています何がいくつかのドキュメントで私を指すことができます。

私は学ぶことを支援するためのおかげで...

+1

を持っています。 StateEnumとそれを使用するクラスがどのように注釈付けされているかを示してください。 IDフィールドを含む関連フィールドのみを含めてください。 –

答えて

0

私はEnhancedUserTypeとは、ParameterizedTypeを実装するクラスを作成することになりました。

上記のクラスを実装するパッケージでは、私はenumクラスを配置しました。

私の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> 
関連する問題