我无法从此代码中添加SELECT DISTINCT taxtCode
:
public List<TblTaxType> findAlltaxtCode(String bfnsCode) {
List<TblTaxType> result = null;
String hql = "select distinct(taxtCode) from TblTaxType tbl_tax_type WHERE bfnsCode = ?";
try {
setSession(HibernateUtil.getSession());
@SuppressWarnings("unchecked")
List <TblTaxType> resultList = getSession().createQuery(hql)
.setString(0, bfnsCode)
.list();
if(!resultList.isEmpty()){
result = resultList;
Debugger.print("TAX CODES FOUND ");
}else{
Debugger.print("TAX CODES NOT FOUND ");
}
} catch (Exception e) {
e.printStackTrace();
Debugger.print(" TAX CODES NOT FOUND ");
}
Debugger.print(hql);
closeSession();
return result;
}
更新为整个代码。查询是正确的,但它似乎没有返回列表值。仍然出现java.lang.String cannot be cast to com.test.test.TblTaxType
错误。此查询如何返回值列表?每当添加单词DISTINCT时都会发生错误。在HQL中是否不可能使用distinct并返回一个值列表,如SQL Query?
答案 0 :(得分:1)
您还可以同时使用标准和投影:
Criteria criteria = session.createCriteria(MyEntity.class);
criteria.setProjection(Projections.distinct(Projections.property( "id" )));
希望对某人有所帮助。
答案 1 :(得分:1)
使用GROUP BY
解决问题,而不是使用DISTINCT
。
String hql = "FROM TblTaxType tbl_tax_type WHERE bfnsCode = ? GROUP BY taxtCode";
答案 2 :(得分:0)
当您使用FROM TblTaxType
OR Select *
开始查询时,它会返回包含所有表格列的表格行,并使用List <TblTaxType> DataType
将其分配到列表中,因此不会出现任何错误
但是当你写Select colName
时,它只返回该表格单元格中的字符串。它无法转换为java.lang.String cannot be cast to com.test.test.classes.TblTaxType
在Hibernate中使用Distinct没有问题。见这里: - How do you create a Distinct query in HQL
答案 3 :(得分:0)
使用hibernate执行此操作的权利是
select tbl_tax_type FROM TblTaxType tbl_tax_type WHERE BFNS_CODE = ?
编辑2
获取不同列使用的具体列表:
select distinct(taxtCode) from TblTaxType WHERE BFNS_CODE = ?
并且在hibernate中你不必使用第一个select语句来获取列表,只需使用这样的from语句:
from TblTaxType where BFNS_CODE = ?