HQL查询出问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 16:17:38
有如下一段方法:
public List<String> findNameByZoneAndTrade(String zoneid,String tradeid){
long zoneid2 = Long.parseLong(zoneid);
long tradeid2 = Long.parseLong(tradeid);
System.out.println("zoneid:"+zoneid2);
System.out.println("tradeid:"+tradeid2);
String hql = "select fullname from Shop where zoneid = ? and tradeid = ?";
Session session = this.getSession();
Query query = session.createQuery(hql);
query.setLong(0, zoneid2);
query.setLong(1, tradeid2);
List<String> fullnameList = query.list();
System.out.println(fullnameList.size());
return fullnameList;
}

控制台输出:
zoneid:3
tradeid:101
Hibernate: select shop0_.FULLNAME as col_0_0_ from EHT.SHOP shop0_ where shop0_.ZONEID=? and shop0_.TRADEID=?
0

我将这句复制到数据库执行一下是可以出来数据的:
select fullname from Shop where zoneid = 3 and tradeid = 101;

为什么Hql查询的List长度为0?????
我甚至不用预处理,直接这么写String

作过映射之后,查询是对对象的操作而不是以前对数据库字段的查询了,所以应该这么写:
select s.fullname from Shop s where s.zoneid = 3 and s.tradeid = 101
这样就好理解了

在保证其它地方没有出错的情况下,fullname、zoneid、tradeid这三个单词应该是对应你的Shop类里面的属性,包括大小写都要和类里面的属性一致。