报错: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();
参考