List l = query.list();时报错,求解

db19930629 2011-04-26 10:45:59

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;
}
});

报的错
----------
freemarker.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 freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
at freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138)
at freemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111)
at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.IfBlock.accept(IfBlock.java:82)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
at freemarker.core.Environment.visit(Environment.java:416)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.IfBlock.accept(IfBlock.java:82)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.Environment.process(Environment.java:189)
at freemarker.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 freemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85)
at freemarker.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)
...全文
553 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yimail 2011-04-26
  • 打赏
  • 举报
回复
threw an exception when invoked on org.hibernate.exception.SQLGrammarException:

"SQLGrammarException"

sql语法异常。错误信息提示已经很明显了。所以,很多时候,自己多注意点细节;
宁波朱超 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 db19930629 的回复:]
Java code

List list = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
……
[/Quote]

用HQL语句用SET添加参数。
血战31天 2011-04-26
  • 打赏
  • 举报
回复
把 sql输出来在数据库中运行一下,
leixiaobo0 2011-04-26
  • 打赏
  • 举报
回复
2楼说得有理。。。
Iamagril 2011-04-26
  • 打赏
  • 举报
回复
1楼说的可能是对的,sql有问题,不能执行
lengtongMM 2011-04-26
  • 打赏
  • 举报
回复
同意楼上的
Iamagril 2011-04-26
  • 打赏
  • 举报
回复
无法执行query ,你看看是不是sql的问题,换成 hql试试吧
剑神一笑 2011-04-26
  • 打赏
  • 举报
回复
+ " and b.baggage_cs4_id = '"+cs4id+"';";
引号里面的分号去掉
luman2002 2011-04-26
  • 打赏
  • 举报
回复
java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int)
数据类型不匹配


....
+ "where i.cs4_id = "+cs4id+ " and b.baggage_cs4_id = "+cs4id+";";


把单引号去掉
db19930629 2011-04-26
  • 打赏
  • 举报
回复
解决了,这个问题是 sql语句在pl里面能执行
但是hibernate就不行。
Mr傅 2011-04-26
  • 打赏
  • 举报
回复
把SQL语句后面的分号去掉。

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

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧