天天看点

Hibernate异常之org.hibernate.QueryException: Expected positional parameter count: 1, actual parameters

1、异常描述

org.hibernate.QueryException: Expected positional parameter count: 1, actual parameters: [] [from Student where name like ?]

备注:

      此处hibernate版本号:3.6.10.Final

2、示例代码

2-1 StudentDao.java

public List<Student> findByName(String name){
		Session session = sessionFactory.getCurrentSession();
	    Transaction transaction = session.beginTransaction();
	    // 定义hql语句
	    String hql = "from Student where name = ?";
	    Query query = session.createQuery(hql);
	    List list = query.list();
	    transaction.commit();
	    return list;
	}
           

2-2 测试类

@Test // 根据学生姓名查询所有学生信息
	public void testFindByName(){
		List<Student> list = studentDao2.findByName("张三");
		for (Student student : list) {
			System.out.println(student);
		}
	}
           

错误原因:在StudentDao.java中没有给问号占位符赋值。

3、解决方式

// 根据学生姓名查询学生信息
	public List<Student> findByName(String name){
	    Session session = sessionFactory.getCurrentSession();
	    Transaction transaction = session.beginTransaction();
	    // 定义hql语句
	    String hql = "from Student where name = ?";
	    Query query = session.createQuery(hql);
	    // 问号占位符赋值
	    query.setString(0, name);
	    List list = query.list();
	    transaction.commit();
	    return list;
	}
           

此文希望可以帮助到大家。如有错误,请指教。                                                           

如果大家还有其他的情况或者好的解决方法,也望指教,感谢阅读。 

继续阅读