【发布时间】:2011-04-24 06:49:57
【问题描述】:
我有一个 Java EE 应用程序并且我使用 Hibernate。域对象,我把List/ArrayList改成了Set/HashSet,因为用Sets比较好。
但是在我的 Dao 实现中我遇到了一个问题:
public Set<Person> getAllPersons() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session sess = sessionFactory.getCurrentSession();
Transaction tx = sess.beginTransaction();
@SuppressWarnings("unchecked")
Set<Item> items = (Set<Item>) sess.createQuery("from Item").list();
tx.commit();
return items;
}
这里出现错误:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Set
我可以做些什么来避免这个错误?
在此先感谢您并致以最诚挚的问候。
【问题讨论】:
-
你确定你知道集合和列表的区别是什么吗?因为使用 Set 绝不是“更好的”。只要您想要集合中的一个对象的单个实例,您就可以使用 Set,而您可以在一个列表中拥有同一对象的多个实例。
标签: java hibernate arraylist set classcastexception