-1

テーブルを使用したSQLクエリがあります。結果セットは、データベース内のテーブルにマップされていないBeanクラスに返されます。コードはここにあります:

    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
4

2 に答える 2

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

ここで文字列として宣言しましたq2.addScalar("POLICYNUM", Hibernate.STRING);

したがって、明らかにクエリの結果は、SearchPolicyBeanpojosではなく文字列リストになります。

ポジョクラスのリストを期待している場合は、使用する必要があります

q2.addEntity(SearchPolicyBean.Class);

そして、それに応じてクエリを変更します。

于 2013-02-09T13:15:25.883 に答える
0

最初の要素を取得するため:

setPolicyNum((String)((Object [])polList.get(i))[0]);

于 2013-02-13T08:13:39.053 に答える