我有两个表,DVD和联系人。
DVD可以借给联系人,一个联系人可以借多个DVD。
一对多的关联(dvd->contact)可以正常工作。
但是另一种方式失败了:(contact->dvd)
这是联系人映射:
<set name="dvds" inverse="true">
<key column="contactId"/>
<one-to-many class="Dvd"/>
</set>
这里是联系人的setter getter方法:
private Set<Dvd> dvds = new HashSet<Dvd>();
public Set<Dvd> getDvds(){
return dvds;
}
public void setDvds(Set<Dvd> dvds){
this.dvds=dvds;
}
当我尝试从联系人处租赁DVD时:
HashSet<Dvd> tt = (HashSet<Dvd>)dds;
我遇到了一个异常:
java.lang.ClassCastException: org.hibernate.collection.PersistentSet
cannot be cast to java.util.HashSet
这个异常是什么意思,我该怎么解决?
编辑:这个方法解决了我的问题:
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)