一尘不染

休眠-> ArrayList无法转换为Set

hibernate

我有一个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

我应该怎么做才能避免这个错误?

预先感谢您和最诚挚的问候。


阅读 382

收藏
2020-06-20

共1个答案

一尘不染

List<Item> list = sess.createQuery("from Item").list();
Set<Item> items = new HashSet<Item>(list);

sess.createQuery("from Item").list(); 将返回结果项的数组列表,如果需要在Set中使用它,可以按照代码所示进行制作

2020-06-20