2016-05-23 6 views
0

私は、HibernateでSetを使用しようとしています。私がSetテーブルに注釈を書く方法にはわからない問題です。Hibernate:org.hibernate.MappingException:型を判別できませんでした:java.util.Set

@Entity 
    @Table(name="user_settings") 
    public class UserSettings { 
    @Id 
    @GeneratedValue 
    private int id; 
    private int userid; 
    protected Set<Integer>foreignLanguageId; 
    public UserSettings() { 

    } 
    public UserSettings(int userid, int nativeLanguageId, 
      Set<Integer> foreignLanguageId, Date birthday) { 
     this.userid = userid; 
     this.nativeLanguageId = nativeLanguageId; 
     this.foreignLanguageId = foreignLanguageId; 
     this.birthday = birthday; 
    } 

    @OneToMany 
    @JoinColumn(name="userid", nullable=false)// This annotation 
    public Set<Integer> getForeignLanguageId() { 
     return foreignLanguageId; 
    } 

エラー:

org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: user_settings, for columns: [org.hibernate.mapping.Column(foreignLanguageId)] 
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:314)........... 
+0

を使用することができますid

@Entity @Table(name="user_settings") public class UserSettings { private Set<Language> foreignLanguages; @OneToMany @JoinColumn(name="fk_user_setting", nullable = false) public Set<Language> getForeignLanguages() { return foreignLanguages; } } 

関連付けを行うことを企業にない使用するようにすべき私はあなたの 'foreignLanguageId'変数に対して' protected'を 'private'に変更し、getterとsetterをそれと一緒に使うべきだと思うので、それはhibernateに写像できます。 –

答えて

0

あなたがIntegerを使用したい場合は、@ElementCollection

@Entity 
@Table(name="user_settings") 
public class UserSettings { 

    private Set<Integer> foreignLanguages; 

    @ElementCollection 
    public Set<Integer> getForeignLanguages() { 
     return foreignLanguages; 
    } 

} 
+0

私は:@ ElementCollectionを置くが、まだ動作していない、私は休止状態4を使用しています。私は今すぐクラスの言語を作成しようとします。どうも。 –

+0

@LayLeangsros Hibernate 3でもうまくいくはずです。あなたのコードに '@ ElementCollection'とスタックトレースを追加してください。 –

関連する問題