報錯: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();
參考