通过Hibernate访问数据库,出现了异常。
本地配置:jdk 1.4.2 ,Tomcat 4.1 windows系统 MySQL4.X数据库
虚拟主机配置:jdk 1.4.2 ,Tomcat 4.1 linux系统 MySQL4.X数据库
通过测试(从Session取出Connection进行操作),Hibernate和数据库的连接已经没有问题。可是下面的异常实在不知道是哪里出的问题
程序源码。
public static List entityList(String hql, int page, int size) {
if (hql == null || hql.length() == 0) {
return null;
}
Session sess = factory.openSession();
Query q = sess.createQuery(hql);
if (page > 0 && size > 0) {
q.setFirstResult((page - 1) * size);
q.setMaxResults(size);
}
List list = q.list();
sess.close();
return list;
}
异常堆栈信息。
包名前缀为ncogi的是我的程序。
org.hibernate.exception.SQLGrammarException: could not execute query org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65)
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.hql.QueryLoader.list(QueryLoader.java:375)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1129)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
ncogi.struts.util.SupperUtil.entityList(SupperUtil.java:113)
ncogi.struts.util.DDO_Util.questList(DDO_Util.java:75)
ncogi.struts.actions.ddo.Quest_Action.add(Quest_Action.java:76)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
......
java.lang.Thread.run(Thread.java:534)
------解决方法--------------------------------------------------------
SQLGrammarException,语法错误或者数据库对象不存在。
------解决方法--------------------------------------------------------
是不是两个环境表结构或定义不一致