Hibernate异常位置超出了声明的ordinal参数的数量

时间:2015-05-08 04:54:48

标签: mysql hibernate

我想用hibernate执行mysql插入查询,我有这个:

String q1="INSERT INTO sample (DatasetStatusID,Message,ProcessTime) VALUES('?','?','?') ";
Query query=session.createSQLQuery(q1);
query.setParameter(0, 5);
query.setParameter(1, "TESTING");
query.setParameter(2, new Date());  
int result=query.executeUpdate();
tx.commit();

我发生了以下异常,

  

线程中的异常" main" org.hibernate.QueryParameterException:   位置超出声明的序数参数的数量。记住这一点   序数参数是基于1的!位置:1

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

如果您使用HIBERNATE推荐的方式保存数据save()HIBERNATE包含数据库操作的所有方法。但是有些原因可以使用native sql query.Saving with hibernate如下所示:

 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     sess.save(YourPojo);
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }

推荐的Hibernate教程:
Hibernate Reference Documentation
 Hibernate Tutorial

答案 1 :(得分:0)

尝试删除查询中参数占位符(问号)周围的引号。