hibernate本地查询没错,服务器上运行出错是什么原因?

governlee 2009-09-18 02:33:37
正在做一个Struts1.3加Hibernate的登录功能,用到以下的查询
String hql = "from User as user where user.name=:n and user.password=:p";
Query query = session.createQuery(hql);
query.setString("n", name);
query.setString("p", passwod);//name 和 password都已经正确传入

调式发现每次执行到 Query query = session.createQuery(hql);就会抛出以下异常:

java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
org.hibernate.hql.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:895)
org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4764)
org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1373)
................

我尝试把以上语句放在main函数里面执行(不通过页面传参),是可以正确查询的。
上网查说是包冲突的问题,但我已经是使用导入MyEclipse自带的包的了。
还是Struts和Hibernate里面某些JAR包有冲突吗?请教大家了
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
governlee 2009-09-18
  • 打赏
  • 举报
回复
花了两个小时,我终于弄明白怎么回事了,总结一下
在hibernate中有一个这样的包:antlr-2.7.6.jar
在struts1.3中有一个这样的包:antlr-2.7.2.jar
如果像我那样不管三七二十一把全部包都导进的话,就会出这样的问题。所以我估计,在本地查询由于不需要用到struts部分,所以就不会出问题了。
暂时发现只有使用HQL查询才会出问题,QBC或SQL查都不会出问题,大家以后导入包的话都留意一下吧。谢谢了~
lifeiscool 2009-09-18
  • 打赏
  • 举报
回复
我不知道..我是来告诉你到lib目录下一个一个检查包..

67,513

社区成员

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

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