使用hibernate的本机sql查询中的强制转换异常

使用hibernate的本机sql查询中的强制转换异常,sql,hibernate,jakarta-ee,Sql,Hibernate,Jakarta Ee,我有一个使用表的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 =

我有一个使用表的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(); 
出现以下错误:

java.lang.String cannot be cast to BO.SearchPolicyBean
您在这里将其声明为字符串
q2.addScalar(“POLICYNUM”,Hibernate.String)

显然,查询结果是一个字符串列表,而不是您的SearchPolicyBean POJO

如果你想要一份你的pojo课程列表,你必须使用

q2.addEntity(SearchPolicyBean.Class);

并根据更改查询。

获取第一个元素:


setPolicyNum((字符串)((对象[])pollit.get(i))[0])

我在一个示例中看到,addscalar用于POJO类中的属性分类addentity用于数据库映射bean。但是我的bean类没有映射到数据库表。
addScalar(String columnAlias) 
          Is to Declare a scalar query result.
q2.addEntity(SearchPolicyBean.Class);