Hibernate Error – コレクションにジェネリック型もOneToMany.targetEntity()もありません.
問題
Hibernate開発では、アノテーションを使用して1対多の関係を定義しました。
package com.mkyong.user.model; @Entity @Table(name = "USER", schema = "MKYONG") public class User implements java.io.Serializable { private Set address = new HashSet(0); //... @OneToMany(orphanRemoval=true, cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user") public Set getAddress() { return this.address; } }
しかし、それは例外を除いてヒットします:
Initial SessionFactory creation failed. org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined: com.mkyong.user.model.user
解決策
Hibernateはリンクする “クラス”を知らないので、クラス “User”は生の型コレクション ”
Set address
“を持ち、Hibernateはこれをサポートしません。
例えば、
-
アドレスを設定します. //Setは生の型ですが、Hibernateは例外を返します.
-
<アドレス>アドレスを設定します. //HibernateはSet Set Addressクラスを知っています.
ですから、あなたのクラスは次のように変更する必要があります:
package com.mkyong.user.model; @Entity @Table(name = "USER", schema = "MKYONG") public class User implements java.io.Serializable { private Set<Address> address = new HashSet<Address>(0); //... @OneToMany(orphanRemoval=true, cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user") public Set<Address> getAddress() { return this.address; } }