请高手教教我吧.
在hibernate中查询数据,查询语句中包含sql函数String sql = (select * from employee emp where left(dbo.f_GetPy(name,1)='要查询的字母')
其中dbo.f_GetPy(name),1)为sql server 2000中的自定义函数,"name"是列名。其作用是查出汉字的字符串的第一个字的英文首字母(按首字母查询)。
我用的是List list = session.createSQLQuery(sql)
.addEntity("emp",Employee.class)
.list() ;
方法。
报的错误是.list()那行。sql语句在查询分析器中试过了,没问题。具体错误代码如下:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: could not execute query
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
yfy.struts.MyActionServlet.process(MyActionServlet.java:17)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause org.hibernate.exception.SQLGrammarException: could not execute query
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.doList(Loader.java:2148)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
org.hibernate.loader.Loader.list(Loader.java:2024)
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111)
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1655)
org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164)
yfy.dao.BaseDaoImpl.execSQLQuery(BaseDaoImpl.java:138)
yfy.struts.action.EmpNameListAction.execute(EmpNameListAction.java:40)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
yfy.struts.MyActionServlet.process(MyActionServlet.java:17)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)请高手们帮我解答。谢谢
在hibernate中查询数据,查询语句中包含sql函数String sql = (select * from employee emp where left(dbo.f_GetPy(name,1)='要查询的字母')
其中dbo.f_GetPy(name),1)为sql server 2000中的自定义函数,"name"是列名。其作用是查出汉字的字符串的第一个字的英文首字母(按首字母查询)。
我用的是List list = session.createSQLQuery(sql)
.addEntity("emp",Employee.class)
.list() ;
方法。
报的错误是.list()那行。sql语句在查询分析器中试过了,没问题。具体错误代码如下:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: could not execute query
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
yfy.struts.MyActionServlet.process(MyActionServlet.java:17)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause org.hibernate.exception.SQLGrammarException: could not execute query
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.doList(Loader.java:2148)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
org.hibernate.loader.Loader.list(Loader.java:2024)
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111)
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1655)
org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164)
yfy.dao.BaseDaoImpl.execSQLQuery(BaseDaoImpl.java:138)
yfy.struts.action.EmpNameListAction.execute(EmpNameListAction.java:40)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
yfy.struts.MyActionServlet.process(MyActionServlet.java:17)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)请高手们帮我解答。谢谢
解决方案 »
- java 线程问题
- 级联问题 我到底需要懂得多少
- 大家来谈谈对内部类的理解啊
- Struts token和form的问题~~求助大侠!
- hibernate 的奇怪问题,请教
- 学java这个都不会,惭愧惭愧,请各位高手指点
- Hibernate外键的问题
- Hibernate 的事务问题?只要问题解决,马上给分!
- 怎样用CVS进行版本控制?装好了,连不上.cvs [login aborted] d:\NARoot no such repositery
- Java jdbc连接oracle数据库 出现网络适配器无法建立连接异常
- SpringSource 只对付费用户提供spring框架及其产品的长期维护
- Com RecordSet java ReslutSet
我想问题应该是由于你addEntity("emp",Employee.class) 的问题.因为转换不过去.所以会在query.list的时候报错
这个情况应该是实体bean里面写得不对吧
如果你不知道怎么改.你就不要addEntity..
然后将list中的第一个转换成Object.
然后将obj的每一个值赋值给对应的bean里面的属性...这样是麻烦了一些。但也是一种解决方法
.addEntity("emp",Employee.class)
改成:
List list = session.createSQLQuery(sql).list();