0

更新

错误说:

ava.lang.String cannot be cast to com.test.test.classes.TblTaxType

发生的事情是当我添加标签时select distinct taxtcode出现错误。但是当我删除选择标签时,FROM tblTaxType tbl_tax_type WHERE bfnsCode = ?一切都很好。原因是什么?这是我的代码:

String hql = "SELECT DISTINCT TAXT_CODE FROM tbl_tax_type WHERE BFNS_CODE = ?";
        try {

                setSession(HibernateUtil.getSession());

                @SuppressWarnings("unchecked")
                List <TblTaxType>  resultList = getSession().createSQLQuery(hql)
                                                            .setString(0, bfnsCode)
                                                            .list();
4

3 回答 3

1

您的实体可能命名为TblTaxType,而不是tblTaxType。案件很重要。

旁注:不要命名sqlHQL 查询。SQL 和 HQL 是不同的语言。

于 2013-08-25T10:20:14.347 回答
0

您的查询返回 TAXT_CODE,此字段是您的 TblTaxType 实体的属性,因此您不能在主实体中转换一个属性(字符串)。这是你错误的原因。

如果您需要完整的实体,则必须更改查询,但 DISTINCT 在这种情况下没有用,因为如果您提取完整的实体,则有 ID 字段(每行不同)。如果你想要第一个元素,你可以在你的查询 ORDER BY 子句中添加 LIMIT 1(是 MySql)。

只有当您使用 MySql 作为 DBMS 时,使用 GROUP BY 的解决方案才有效,因为如果您有 Sql Server,字段列表/分组依据的正确行为是:字段列表中的字段必须在 GROUP BY cluse 中或必须在聚合函数中。

于 2013-08-26T09:29:03.827 回答
0

使用 GROUP BY 而不是使用DISTINCT.

String hql = "FROM TblTaxType tbl_tax_type WHERE bfnsCode = ? GROUP BY taxtCode";
于 2013-08-26T09:17:36.227 回答