开发者社区> 问答> 正文

HibernateDaoSupport 执行SQL 报错 ?报错

就这样一条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的地方,就不会报这个错误。

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


展开
收起
爱吃鱼的程序员 2020-06-22 13:34:26 556 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    Column'NAME'notfound.大哥,我都说了,sql是没有问题的!!通过Hibernate查询就出错!!<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.65625px;background-color:#F8F8F8;">为什么smw.NAME要加单引号?NavicatPremium工具中使用“.”后自动带出的,应该是“NAME”和“WEEK”都是关键字,所以工具自动加上的。直接用双引号看看。回复<aclass='referer'target='_blank'>@huan:大哥你加AS不觉得多余啊…………回复<aclass='referer'target='_blank'>@pengcheng_1024:另外你的smms3.NAME'主餐别',中间少了AS,真不知道你是怎么跑起来的。。。回复<aclass='referer'target='_blank'>@pengcheng_1024:别名不要加任何引号,关键字列名加双引号。问题不出在这个你讲什么加双引号啊??别名吗?<imgsrc="http://www.oschina.net/js/ke/plugins/emoticons/images/17.gif"alt=""/>哎!!都说这个sql可以执行的,为什么通过Hibernate就不行啦!!是我问的含糊,不好意思啊!回复<aclass='referer'target='_blank'>@pengcheng_1024:报错楞个明显,你哈要我说个啥子?你这是什么情况啊

    2020-06-22 13:34:43
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载