當(dāng)ManyToMany或者M(jìn)anyToOne定義時,JoinTable中referencedColumnName指向的是非主鍵(non PK columns),將 報ClassCastException。這里有個簡單解決辦法。
如下面這個定義,一個HOSTGROUP可以包含多個HOST,而一個HOST也可以屬于多個HOSTGROUP,hostgroup_id是HOSTGROUP表的主鍵,但是host_object_id不是HOST表的主鍵,卻也可以唯一標(biāo)識HOST,這個時候就會出現(xiàn)上述異常。
@Entity
@Table(name = "hostgroups")
public class CurHostGroup {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "hostgroup_members", joinColumns = @JoinColumn(name = "hostgroup_id", referencedColumnName = "hostgroup_id"), inverseJoinColumns = @JoinColumn(name = "host_object_id", referencedColumnName = "host_object_id"))
private Set<CurHost> hosts = new HashSet<CurHost>(0);
};
有個非常簡單的解決辦法,讓HOST表關(guān)聯(lián)的類CurHost implements Serializable即可,要是不知道這個,能憋死人。當(dāng)然這樣做,CurHost就不是POJO了。
posted on 2008-10-27 17:30
我愛佳娃 閱讀(4017)
評論(1) 編輯 收藏 所屬分類:
DB相關(guān) 、
Hibernate