我有一个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
我应该怎么做才能避免这个错误?
预先感谢您和最诚挚的问候。
List<Item> list = sess.createQuery("from Item").list(); Set<Item> items = new HashSet<Item>(list);
sess.createQuery("from Item").list(); 将返回结果项的数组列表,如果需要在Set中使用它,可以按照代码所示进行制作
sess.createQuery("from Item").list();