ssh2 执行sql 语句错误

jiazimo 2010-04-15 04:43:28

SSH2 中执行代码:


Session se = getHibernateTemplate().getSessionFactory().openSession();

Query query = se.createSQLQuery("select * from student");

List<Student> list = query.list();
System.out.println("The Query Size :"+list.size());
return list;


控制台中错误:
2010-4-15 16:34:19 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)

浏览器中错误:
Struts Problem Report
Struts has detected an unhandled exception:

Messages: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]??? 'student' ???




FreeMarker template error!

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
The problematic instruction:
----------
==> ${msg[0]} [on line 68, column 29 in org/apache/struts2/dispatcher/error.ftl]
----------

Java backtrace for programmers:
----------
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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at freemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85)
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
... 39 more

...全文
372 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
都来发烧拉稀 2011-05-10
  • 打赏
  • 举报
回复
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=school">
中的microsoft去掉。。。。。

<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=school">
cm198771 2010-10-25
  • 打赏
  • 举报
回复
我前两天跟你一样遇到很大麻烦,出了相同的错误
进过我仔细检查,才发现我的数据库表设计出错了,一张表里面的一个字段(user)命名跟数据库冲突了,我更给后就好了,这样的问题你可以好好检查下数据库,看看你设计的字段名是不是数据库合法的。
这是我这个人遇到问题在自己解决的,在网上搜了很久,没有发现合适的答案,所有自己解决后贴出来,希望对以后遇到相同错误的人有所帮助!
z2008g 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 jiazimo 的回复:]
Spring 中配置文件:

XML code
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
……
[/Quote]
貌似可以运行
luther_liu 2010-04-16
  • 打赏
  • 举报
回复
在获得session的时候 用spring里面的注入 去获得session试试,你用这个好像不行
huisui1234 2010-04-16
  • 打赏
  • 举报
回复
Session se = getHibernateTemplate().getSessionFactory().openSession();
你使用这个模板 你的类是否继承了HibernateDaoSupport
jiazimo 2010-04-16
  • 打赏
  • 举报
回复
Spring 中配置文件:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=school">
</property>
<property name="username" value="sa"></property>
<property name="password" value="sa"></property>
</bean>

调用原生 sql 这儿必须得加上 DatabaseName=XXX

方法中:

List list = se.createSQLQuery(sql).addEntity(Student.class).list();
jiazimo 2010-04-16
  • 打赏
  • 举报
回复
还不行啊!!
jumpheightway 2010-04-15
  • 打赏
  • 举报
回复
List<Student> list = query.list();
这句话的错
执行sql能够强制转换成某个类型的对象吗
List list = query.list();
这是由于强制转换失败造成的
不强制转换就不会有错了
小步快跑 2010-04-15
  • 打赏
  • 举报
回复
取的结果集的问题
babyukiss 2010-04-15
  • 打赏
  • 举报
回复
直接用from XXX,
XXX代表你的实体类
xiaohaifang 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jiazimo 的回复:]
Spring 中配置文件:

XML code

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
……
[/Quote]
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433">
这个配置里面没有指定数据库名。
Acylas 2010-04-15
  • 打赏
  • 举报
回复
Session se = getHibernateTemplate().getSessionFactory().openSession();

Query query = se.createSQLQuery("select s.* from student s");//要用别名
query.addEntity("s", Student.class);//list之前要先调用
List<Student> list = query.list();
System.out.println("The Query Size :"+list.size());
return list;
xiaochengfu1 2010-04-15
  • 打赏
  • 举报
回复
代码没问题,
javacn_org 2010-04-15
  • 打赏
  • 举报
回复
配置文件和 代码完全正确
个人感觉 应该是 页面出错
你好好检查一下
crazylaa 2010-04-15
  • 打赏
  • 举报
回复
可能是类型转换错误。select *的*里面某些字段在Student类里面没有get/set方法?或者类型弄错了?
jiazimo 2010-04-15
  • 打赏
  • 举报
回复

Spring 中配置文件:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433">
</property>
<property name="username" value="sa"></property>
<property name="password" value="sa"></property>
</bean>


现在不用hql 语句!
bunrise 2010-04-15
  • 打赏
  • 举报
回复
query为null吧
Code_java1 2010-04-15
  • 打赏
  • 举报
回复
java.lang.NullPointerException

看看哪个是NullPointer
gagucheng 2010-04-15
  • 打赏
  • 举报
回复
sql应该是from Student吧
平淡面对 2010-04-15
  • 打赏
  • 举报
回复

Session se = getHibernateTemplate().getSessionFactory().openSession();



检查一下sessionFactory的设置,通常应该是注入,而不是自己去读取。
加载更多回复(4)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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