List list = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
String sql = "select i.zm," + " b.ticket_flag,"
+ " b.start_no," + " b.end_no,"
+ " b.ticket_num," + "b.invalid_num,"
+ "b.total_package_num," + "b.total_weight,"
+ " b.total_price," + "b.closed_date,"
+ "b.in_date "
+ "from xb_cs4_imp i, xb_baggage_cs4 b "
+ "where i.cs4_id = '"+cs4id+"'"
+ " and b.baggage_cs4_id = '"+cs4id+"';";

SQLQuery query = session.createSQLQuery(sql);
List l = query.list(); return l;
}
});报的错
----------
freeer.template.TemplateModelException: Method public java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on org.hibernate.exception.SQLGrammarException: could not execute query
at freeer.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
at freeer.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138)
at freeer.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111)
at freeer.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90)
at freeer.core.Expression.getAsTemplateModel(Expression.java:89)
at freeer.core.Expression.getStringValue(Expression.java:93)
at freeer.core.DollarVariable.accept(DollarVariable.java:76)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.IfBlock.accept(IfBlock.java:82)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
at freeer.core.Environment.visit(Environment.java:416)
at freeer.core.IteratorBlock.accept(IteratorBlock.java:102)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.IfBlock.accept(IfBlock.java:82)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.Environment.process(Environment.java:189)
at freeer.template.Template.process(Template.java:237)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:748)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.revenue.admin.service.PermissionFilter.doFilter(PermissionFilter.java:63)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.revenue.base.filter.ReDispatcherFilter.doFilter(ReDispatcherFilter.java:40)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: java.lang.NullPointerException
at freeer.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85)
at freeer.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
... 42 more
[REVENUE] 04-26 10:39:27.796 ERROR [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] PermissionFilter.doFilter(66) | Response already committed
java.lang.IllegalStateException: Response already committed
at weblogic.servlet.internal.ServletResponseImpl.objectIfCommitted(ServletResponseImpl.java:1553)
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:612)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:752)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.revenue.admin.service.PermissionFilter.doFilter(PermissionFilter.java:63)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.revenue.base.filter.ReDispatcherFilter.doFilter(ReDispatcherFilter.java:40)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:124)
at weblogic.servlet.internal.ServletOutputStreamImpl.commit(ServletOutputStreamImpl.java:463)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1460)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1415)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

解决方案 »

  1.   

    + " and b.baggage_cs4_id = '"+cs4id+"';";
    引号里面的分号去掉
      

  2.   

    无法执行query ,你看看是不是sql的问题,换成 hql试试吧
      

  3.   

    1楼说的可能是对的,sql有问题,不能执行
      

  4.   

    把 sql输出来在数据库中运行一下,
      

  5.   


    用HQL语句用SET添加参数。
      

  6.   

    threw an exception when invoked on org.hibernate.exception.SQLGrammarException:"SQLGrammarException"sql语法异常。错误信息提示已经很明显了。所以,很多时候,自己多注意点细节;
      

  7.   

    把SQL语句后面的分号去掉。但是为什么lz要把一个好好的字符串拆分成好几个+起来呢?中间又没有使用变量啊
      

  8.   

    解决了,这个问题是 sql语句在pl里面能执行
    但是hibernate就不行。
      

  9.   

    java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int)
    数据类型不匹配
    ....
    + "where i.cs4_id = "+cs4id+ " and b.baggage_cs4_id = "+cs4id+";";
    把单引号去掉