论坛首页 Java企业应用论坛

query.setParameter在MySQL的下异常

浏览 6942 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-02-19  
熬夜搞叻一晚上,仍然没有头绪,只好在这里发帖叻。

环境是:Hibernate 3.0.5/3.1.2 + MySQL 4.1.12/4.0.21(意思就是每个东西的两个版本都试验过,结果一样,属于实验无关项)

问题是这样的。只要我的HQL写成“?”占位符(不是“:name”这样的形式),那么拿到Query对象后,执行setParameter(0, obj)这样的操作,就会有问题。通过我在三台不同机器上的试验,问题分这样几种情况:

1、再对query对象做一下setMaxResults()或者setFirstResult(),则报异常。异常信息大概是下面这个样子:

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2148)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1129)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at test.HibernateTest.main(HibernateTest.java:45)
Caused by: java.sql.SQLException: No value specified for parameter 4
...

后面就不说叻,异常的意思就是有一个parameter没有设置。而事实上,这个parameter我没有写。比如我写两个?,再设置一次setMaxResults(),那么输出的SQL里应该是有3个?,前两个是我自己写的,后面那个是MySQL的分页输出limit ?。但是这个时候它会报No value specified for parameter 4。。。

2、即使不设置setMaxResults(),再有的机器上也报错,也即根本没法用setParameter(int, Object)方法。。。

我想我还是不多说叻,大家如果不忙的话,可以试一下,MySQL的JDBC驱动无所谓(事实上我用3.0.17/3.1.8/3.1.10/3.1.12全试过),如果你能成功地使用setParameter(int, Object)这个方法而毫无问题,请一定详细地告诉我。。。    


补充:相同的代码,去连Oracle数据库(表结构一样),就没任何问题。
   发表时间:2006-02-19  
我看MySQL JDBC Driver文档上面说到5.0.x以上版本才真正支持PreparedStatement。
0 请登录后投票
   发表时间:2006-02-19  
又一次刚问完问题就遇到robbin,真是感动。

我从昨晚2点一直搞这个问题,现在已经没有力气下载MySQL 5.x来继续研究叻。。。

我google叻狠久,在forum.hibernate.org上也search过,没有发现有人跟我有相同的问题。可是,从常理上讲,Hibernate+MySQL用的人绝对不少,不可能没有人遇到setParameter(int, Object)问题,我为叻搞清是不是我自己机器的问题,先后动用叻两台笔记本电脑和一台服务器。。。

恳请robbin能帮个忙,帮我解决这个问题。。。
0 请登录后投票
   发表时间:2006-02-19  
。。。我虽然狠困,但是躺在床上还是睡不着,于是爬起来装叻MySQL 5.0.18。

现在所有的问题都不见叻。。。包括我在这个帖子里说的:
http://forum.iteye.com/viewtopic.php?t=18642

打扰robbin叻,呵呵。看来真的是MySQL 4.x的问题。
0 请登录后投票
   发表时间:2006-02-19  
我用4.1.x没有你这样的问题
0 请登录后投票
   发表时间:2006-02-19  
的确狠奇怪~不过我也懒得研究叻。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics