两张表做多对一联合查询。想把查到的结果封装在VO里。代码如下:select new com.vo.WeatherVo(sta.counties,wea.bwea,wea.ewea,wea.tmax,wea.tmin) from Station as sta inner join sta.weathers as wea where wea.spiderDate = CURDATE() and wea.date = CURDATE() and sta.stationNo like '10101%'
List voList = this.queryList(hql);此时,voList.size()等于0,也就是说HQL语句查询出的结构没有成功封装到VO对象上。问题出在where条件语句上。where wea.spiderDate = CURDATE() and wea.date = CURDATE() and sta.stationNo like '10101%'一共三条条件语句wea对象两条,sta对象一条。当把sta条件注释掉,则可以封装到VO对象上。代码如下:where wea.spiderDate = CURDATE() and wea.date = CURDATE()现在注释一条wea条件语句,也封装不到VO对象,代码如下:where wea.spiderDate = CURDATE() and sta.stationNo like '10101%'
我测试的结果是,只能使用一个对象做条件语句才能正确封装到VO对象上。即要么使用wea,要么使用sta。但是使用一者满足不了SQL需求。
HQL是否写的有错误?请帮我修正,谢谢 !