2011-12-09 19 views
0

私はHibernateを使い始めています。enum型を持っているはずのエンティティに対して、次のエラーが発生しています。Enum型Hibernate 3

package app.entity; 

@Entity 
class Example { 
    @Enumerated(EnumType.STRING) 
    private ObjType type; 
} 

次のように定義列挙型クラスは次のとおりです:

java.lang.IllegalArgumentException: No enum const class app.entity.ObjType. 
java.lang.Enum.valueOf(Enum.java:214) 
    org.hibernate.type.EnumType.nullSafeGet(EnumType.java:125) 
    org.hibernate.type.CustomType.nullSafeGet(CustomType.java:109) 
    org.hibernate.type.AbstractType.hydrate(AbstractType.java:104) 
    org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283) 

は、私は、次の列挙型が定義されてきた私が間違って何をやっている

package app.entity; 

public enum ObjType { 
    typeA, 
    typeB 
} 

?また、setメソッドとgetメソッドも "@Enumerated(EnumType.STRING)"という注釈を付ける必要がありますか?

私は助けていただきありがとうございます。 ありがとう

+0

Hibernateの 'hydrate()'を呼び出すプロジェクトで、実際にクラスパスに 'ObjType' enumが実際にはありません。多分それは以前のバージョンなのでしょうか? – Gray

答えて

0

そのまだはっきりしていない場合は戻って来ます。余分に注意してください。エラーメッセージの末尾に "" ""がenumクラスと連結しようとしました。 "

+0

あなたは大丈夫です!ありがとうございました。 – Loke

0

かなり近いようです。 Enum値の大文字の名前を先頭に使用してください。同様の投稿が役立つかもしれません。必要なHibernate 3.2+について語っています。

Enumerations in Hibernate

私はあなたがそれをロードするために、それは空の値の列挙値を見つけることができませんしようとしているデータベース内の空の値を持っていると思う

+0

私はすでにそれがそこに説明されている方法でそれを定義しました。それは私を助けません。既に定義されている欠落しているEnumクラスについて不平を言っているのはなぜですか?私がエンティティに対してクエリを実行したときに起こります。 – Loke

+0

データベース内の値に空白(先頭または末尾のスペース)がないことを確認してください。そしてあなたのEnum値と同じです。この例外が発生したときを明確にすることはできますか? – Brad

+0

DBスキーマを作成するのか、それともHibernateによって作成されたのですか? DB内のデータ型が後続/先行スペースを追加しないことを確認してください。 – WeMakeSoftware