2013-02-09 57 views
-1

我有一個使用表中的sql查詢。結果集返回到未映射到數據庫中的表的bean類。該代碼是在這裏:在使用休眠的原生sql查詢中拋出異常

SQLQuery q2=ss.createSQLQuery("select tbl_policy.policyNum as POLICYNUM FROM  tbl_policy join tbl_product on tbl_policy.FK_productId = tbl_product.pk_product_id join tbl_code on tbl_policy.FK_codeId = tbl_code.PK_codeId join tbl_agriyear on tbl_policy.FK_agriYearId = tbl_agriyear.pk_agriyear_id where tbl_policy.FK_naturalInsurantId = :p1 and tbl_agriyear.AGRIYEAR =:p2"); 
q2.addScalar("POLICYNUM", Hibernate.STRING); 
List<SearchPolicyBean> lsql = (List<SearchPolicyBean>)q2.list(); 

bean類的名字是:SearchPolicyBean 當我運行它,在這條線

System.out.println("Finalllll "+lsql.get(0).getPOLICYNUM()); 

出現此錯誤:

java.lang.String cannot be cast to BO.SearchPolicyBean 

回答

0

用於獲取第一個元素:

setPolicyNum((字符串)((對象[])polList.get(I))[0]);

0
addScalar(String columnAlias) 
      Is to Declare a scalar query result. 

你聲明它作爲字符串在這裏q2.addScalar("POLICYNUM", Hibernate.STRING);

所以很顯然,查詢結果是一個字符串列表,而不是您的SearchPolicyBean pojos。

如果您expectiong你的POJO CLASSE的列表中,您必須使用

q2.addEntity(SearchPolicyBean.Class); 

並根據您的查詢更改。

+0

我在示例中看到,添加標量用於對POJO類中的屬性進行分類 – AFF 2013-02-09 19:39:24

+0

addEntity用於數據庫映射的bean。但是我的bean類沒有映射到數據庫表。 – AFF 2013-02-11 05:52:38