Java中很多地方的index都是0开始的,不过有个特殊,就是在操作JDBC的时候,比如设置patameter的时候,是以1开始的,今天在Hibernate中使用:
String sql = "insert into t_table_name(id, name) values(?,?)"; SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql); query.setParameter(1, 1); query.setParameter(2, "Terry"); query.executeUpdate();
以上却报错:
java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based
通过研究,发现虽然报错里面写的是:『Remember that ordinal parameters are 1-based』,但是我们在Hibernate里给参数设置index的时候,居然还是还要从o开始,如下:
String sql = "insert into t_table_name(id, name) values(?,?)"; SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql); query.setParameter(0, 1); // hibernate里还是用0开始的index!! query.setParameter(1, "Terry"); query.executeUpdate();
文章评论