报错:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xxx.entity.PersonEntity


 报错:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xxx.entity.PersonEntity

代码:SessionFactory sf=this.getSessionFactory();

Session session=sf.openSession();
SQLQuery createSQLQuery = session.createSQLQuery("select * from person");

List<PersonEntity> list_Person = (List<PersonEntity>)createSQLQuery.list();
session.close();

上面的查询是返回标量值的,Object类型,是从resultset中返回的”裸”数据。

如果使用原生sql语句进行query查询时,hibernate是不会自动把结果包装成实体的。需手动包装

解决方式:

下面通过加上 addEntity() 让原生查询返回实体对象。

Session session=sf.openSession();

SQLQuery createSQLQuery = session.createSQLQuery("select * from person");

createSQLQuery.addEntity(PersonEntity.class);
List<PersonEntity> list_Person = (List<PersonEntity>)createSQLQuery.list();
session.close();

参考


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM