簡體   English   中英

帶有泛型的Java List Iterator的ClassCastException

[英]ClassCastException with java List Iterator with Generics

我正在嘗試使用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 
         }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM