java - ClassCastException 与带有泛型的 java 列表迭代器

标签 java hibernate generics arraylist iterator

我正在尝试使用 Hibernate 显示酒店的名称。但是,当我迭代从数据库中获取的酒店列表时,iter.next() 给出了 ClassCastException ,指出 Object 无法转换为 Hotel 类。这是我的方法。

public List<Hotel> getAllHotels()
{
    List<Hotel> contracts = new ArrayList<Hotel>(  );
    Transaction tx = null;
    Session session = SessionFactoryUtil.getCurrentSession();
    try
    {
        tx = session.beginTransaction();
        contracts = session.createSQLQuery("select * from HOTEL").list();
        System.out.println("*** Content of the Hotel Table ***");
        System.out.println("*** Start ***");
        for ( Iterator<Hotel> iter = contracts.iterator(); iter.hasNext();) {
            Hotel h =  iter.next();
            System.out.println(h.getHotelName());
        }
        System.out.println("*** End ***");
        tx.commit();
    }
    catch( RuntimeException e )
    {
        if( tx != null && tx.isActive() )
        {
            try
            {// Second try catch as the rollback could fail as well
                tx.rollback();
            }
            catch( HibernateException e1 )
            {
                System.out.println( "Error rolling back transaction" );
            }
            // throw again the first exception
            throw e;
        }
    }
    return contracts;
}

我已经对列表和迭代器使用了泛型,但无法找出错误。如有任何帮助,我们将不胜感激。

最佳答案

看起来您可能需要在创建 SQLQuery 时添加实体。

引用https://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/

session.createSQLQuery("select * from HOTEL").addEntity(Hotel.class).list();

或者,如果使用当前代码,则迭代对象数组

List result = query.list();
for(Object object : data)
         {
             //Logic 
         }

关于java - ClassCastException 与带有泛型的 java 列表迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509894/

相关文章:

swift - 实现泛型协议(protocol)方法但对整个类使用泛型

java - 如何检查 java 中的(未检查的)强制转换?

java - 在 ANTLR 解析器中跳过空格

java - 无法打开 JPA EntityManager 进行事务 - 通信链接失败(Spring-boot/jpa/hibernate/连接池)

java - 即使我运行 mvn hibernate3 :hbm2cfgxml 也不会创建 hibernate.cfg.xml

java - 无法使用spring和hibernate集成自动创建表并插入记录

swift - 基于字符串的枚举是否有 Swift 类型?

java - 连续生成随机枚举值而不两次获得相同的值

java - 如何使用 HTML 和 CSS 作为 Java 应用程序 GUI?

java - Google App Engine Java - javax.servlet 源文件