HibernateDaoSupport 执行SQL 报错

pengcheng_1024 发布于 2013/12/27 15:23
阅读 787
收藏 1

就这样一条sql,在Navicat中能够正常执行。但是通过Hibernate查询就报错,说“NAME”列不存在!!

List<Object[]> obj = this.getQcyOrderInfoDAO().executeSQLQuery("
SELECT smw.ID AS smwID,smw.`NAME` AS '窗口', 
CASE   WHEN smsi.`WEEK`=1 then '星期一' 
WHEN smsi.`WEEK`=2 then '星期二'   
WHEN smsi.`WEEK`=3 then '星期三'  
WHEN smsi.`WEEK`=4 then '星期四'  
WHEN smsi.`WEEK`=5 then '星期五' 
WHEN smsi.`WEEK`=6 then '星期六'  
WHEN smsi.`WEEK`=7 then '星期日'  
END as '星期',   
smms3.ID, smms3.`NAME` '主餐别', 
sms.id  AS  smsID,   sms.`NAME`  AS '次餐别',  sms.SEQUENCE  AS smsSequence,   
smat.`NAME`  AS '属性' , smat.ID AS smatID , sm.`NAME`  AS '菜名'   
from smart_menu_schedule_item AS smsi   
LEFT JOIN smart_menu as sm ON sm.ID = smsi.SMART_MENU_ID   
LEFT JOIN smart_menu_attribute smat on smat.ID =  smsi.MENU_ATTRIBUTE_ID  
LEFT JOIN smart_menu_meal_sort sms on sms.id = smsi.SORT_ID   
LEFT JOIN smart_menu_window smw on smw.ID = smsi.WINDOW_ID  
LEFT JOIN smart_menu_meal_sort as smms2  ON sms.id= smms2.ID  
LEFT JOIN smart_menu_meal_sort as smms3  ON  smms3.ID=smms2.HEADER_ID  
where smsi.HEADER_ID = 261 ");

dao层的代码:

/**
 * <b>基础DAO支持</b><br/>
 * <b>说明:</b>所有的DAO层类,都要继承这个DAO
 * 
 */
@Repository
public class CommonDAO extends HibernateDaoSupport {
	private Session session() {
		return getSession();
	}
 	public SQLQuery createSQLQuery(final String sql) {
		return this.session().createSQLQuery(sql);
	} 
}
错误信息:
WARN - [org.hibernate.util.JDBCExceptionReporter:line 77]SQL Error: 0, SQLState: S0022
ERROR - [org.hibernate.util.JDBCExceptionReporter:line 78]Column 'NAME' not found.
ERROR - [com.hestia.mosa.qcy.controller.QcyOrderInfoController:line 109]could not execute query
ERROR - [com.hestia.mosa.qcy.controller.QcyOrderInfoController:line 116]org.hibernate.exception.SQLGrammarException: could not execute query
程序中有不通过Hibernate执行sql的地方,就不会报这个错误。

请高手指点啊,感谢啦……


以下是问题补充:

@pengcheng_1024:怎么就这么多人浏览每人回答啊!!都别打酱油啊……,留点足迹吧 (2013/12/27 15:49)
@pengcheng_1024:我实际想问的是为什么一条可以执行的sql通过Hibernate去查询就报这个错误啊?? (2013/12/28 11:49)
加载中
0
戴威
戴威
Column 'NAME' not found.
pengcheng_1024
pengcheng_1024
大哥,我都说了,sql是没有问题的!!通过Hibernate查询就出错!!
0
文心雕码
文心雕码
为什么smw.`NAME`要加单引号?
pengcheng_1024
pengcheng_1024
Navicat Premium 工具中使用“.”后自动带出的,应该是“NAME”和“WEEK”都是关键字,所以工具自动加上的。
0
huan
huan
直接用双引号看看。
pengcheng_1024
pengcheng_1024
回复 @huan : 大哥你加 AS 不觉得多余啊…………
huan
huan
回复 @pengcheng_1024 : 另外你的smms3.`NAME` '主餐别', 中间少了 AS ,真不知道你是怎么跑起来的。。。
huan
huan
回复 @pengcheng_1024 : 别名不要加任何引号,关键字列名加双引号。
pengcheng_1024
pengcheng_1024
问题不出在这个
pengcheng_1024
pengcheng_1024
你讲什么加双引号啊??别名吗?
下一页
0
sxgkwei
pengcheng_1024
pengcheng_1024
哎!!都说这个sql可以执行的,为什么通过Hibernate就不行啦!!是我问的含糊,不好意思啊!
sxgkwei
sxgkwei
回复 @pengcheng_1024 : 报错楞个明显,你哈要我说个啥子?
pengcheng_1024
pengcheng_1024
你这是什么情况啊
返回顶部
顶部