gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:34:15 27 4
gpt4 key购买 nike

我正在尝试使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com