Note that there are some explanatory texts on larger screens.

plurals
  1. POa hibernate bug?
    text
    copied!<pre><code>16:59:08,082 INFO org.springframework.test.context.transaction.TransactionalTestExecutionListener:274 - Began transaction (1): transaction manager [org.springframework.orm.hibernate3.HibernateTransactionManager@f90137]; rollback [true]java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based! at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:79) at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterExpectedType(ParameterMetadata.java:85) at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:421) at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:393) at com.luck.dao.BaseDao$1.doInHibernate(BaseDao.java:106) at com.luck.dao.BaseDao$1.doInHibernate(BaseDao.java:1) </code></pre> <p>and my code is :</p> <pre><code>public List&lt;T&gt; list(final String hql,final int start, final int limit,final Object ...args) { return hibernateTemplate.executeFind(new HibernateCallback&lt;List&lt;T&gt;&gt;() { public List&lt;T&gt; doInHibernate(Session session) throws HibernateException, SQLException { Query q = session.createQuery(hql).setFirstResult(start).setMaxResults(limit); if(args!=null&amp;&amp;args.length&gt;0){ for (int i = 0; i &lt; args.length; i++) { q.setParameter(i+1, args[i]); } } return (List&lt;T&gt;) q.list(); } }); } </code></pre> <p>the question is : when I change 'q.setParameter(i+1, args[i]); to q.setParameter(i,args[i]),then It works .</p> <pre><code>public List&lt;T&gt; listJPA(final String hql,final int start, final int limit,final Object ...args) { return hibernateTemplate.executeFind(new HibernateCallback&lt;List&lt;T&gt;&gt;() { public List&lt;T&gt; doInHibernate(Session session) throws HibernateException, SQLException { javax.persistence.Query q = entityManagerFactory.createEntityManager().createQuery(hql).setFirstResult(start).setMaxResults(limit); if(args!=null&amp;&amp;args.length&gt;0){ for (int i = 0; i &lt; args.length; i++) { q.setParameter(i+1, args[i]); } } return (List&lt;T&gt;) q.getResultList(); } }); } </code></pre> <p>why? is that a bug in hibernate (3.3.2 GA and 3.5.2Final) or do I misunderstand what '1-base' 's means?</p> <p>( the 1-based ordinal exception behaves differently in JPA) then I remember the last project I create with JPA1.0,</p> <p>I make anthoer demo,as the result,It works well</p> <pre><code>java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based! at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:79) at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterExpectedType(ParameterMetadata.java:85) at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:421) at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:393) at com.luck.dao.BaseDao$2.doInHibernate(BaseDao.java:124) at com.luck.dao.BaseDao$2.doInHibernate(BaseDao.java:1) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406) at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343) at com.luck.dao.BaseDao.list(BaseDao.java:119) at com.luck.dao.HistoryDaoTest.testHistory(HistoryDaoTest.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) at org.junit.runners.ParentRunner.run(ParentRunner.java:220) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 17:21:30,714 INFO org.springframework.test.context.transaction.TransactionalTestExecutionListener:294 - Rolled back transaction after test execution for test context [[TestContext@43ad4a testClass = HistoryDaoTest, testInstance = com.luck.dao.HistoryDaoTest@125d568, testMethod = testHistory@HistoryDaoTest, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@ddcd98 testClass = HistoryDaoTest, locations = '{classpath*:/application-context.xml}', classes = '{}', activeProfiles = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader']]] Hibernate: select history0_.bet_id as bet1_3_, history0_.bet as bet3_, history0_.num as num3_, history0_.time as time3_, history0_.type as type3_, history0_.win as win3_ from History history0_ where history0_.bet_id=? limit 17:21:30,780 INFO org.springframework.context.support.GenericApplicationContext:1020 - Closing org.springframework.context.support.GenericApplicationContext@102799c: startup date [Tue Feb 14 17:21:28 CST 2012]; root of context hierarchy </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload