Ljava.lang.Object 異常

    

數據顯示爲Ljava.lang.Object;@2a139a55問題,是因爲你從數據庫讀出數據後,存入到list集合上時,如果你沒有指定要存入的數據的類型,系統會自動給你賦一個object類型,他是所以類的鼻祖,你取出數據要進行轉型,轉化成你自己想要的數據類型才能顯示。

修改後:

 

 初學者使用hibernate執行查詢的時候,很容易遇到結果集的類型轉換問題,所以明確“執行結果”裏的數據類型很重要。下面有兩小例子:

(1):使用HQL進行條件查詢。此結果集List包含的是對象數組,其中對象數組的索引0位置是Dept對象,該對象數組的長度取決於參與的表的個數。

 

 

    Session session = HibernateSessionFactory.getSession();

 

Query q = session.createQuery("from Dept d where d.dept is not null");

List<Object> list = query.list();//List包含的是對象數組

for(int i = 0 ; i < list.size(); i ++){//循環打印Dept的屬性值

Object [] obj = (Object [])list.get(i);//obj中保存的是查詢出的對象

Dept d = (Dept)obj[0];//索引0位置是Dept對象

System.out.println(d.getDname() );

}

 

    HibernateSessionFactory.closeSession();

(2):使用SQL進行條件查詢。此結果集List包含的也是對象數組,不同的是對象數組索引0位置是Dept對象的第一個屬性,該對象數組的長度取決於Dept表的屬性的多少。

    Session session = HibernateSessionFactory.getSession();

 

Query q = session.createSQLQuery("select * from DEPT where FatherNo is not null"); 

List<Object> list = q.list();

for(int i=0;i<list.size();i++){

Object[] obj = (Object[])list.get(i);//obj中保存的是查詢出的對象的屬性值

for(int j = 0 ; j < obj.length; j ++){//循環打印Dept的屬性值

System.out.print(obj[j] + "/t");

}

System.out.println("/n");

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章