gpt4 book ai didi

Java,Hibernate java.lang.ClassCastException : org. hibernate.collection.PersistentSet 无法转换为 java.util.HashSet

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:55 25 4
gpt4 key购买 nike

我有两个表,DVD 和联系人。

一张 DVD 可以租给一个联系人,一个联系人可以租多张 DVD。

多对一链接 (dvd-->contact) 工作正常。

但另一种方式失败了:(contact-->dvd)

这是联系人映射:

<set name="dvds" inverse="true">
<key column="contactId"/>
<one-to-many class="Dvd"/>
</set>

这里是 Contact 的 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)

最佳答案

您不需要转换为 HashSet。它是一个 Set,并且不提供任何额外的方法。所以不要施法。

这是使用集合时的一般规则——不要用它们的具体类来引用它们(除非你真的需要)。使用 ListSet,而不是 ArrayListHashSet

关于Java,Hibernate java.lang.ClassCastException : org. hibernate.collection.PersistentSet 无法转换为 java.util.HashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4584388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com