在hql中不等于查询不起作用

时间:2015-03-04 19:18:49

标签: java hibernate hql

我在hql中使用'not equal'查询。

 @Override
    public Student findStudentsByYear(String year) {
        String queryString = "from Student where year<>:year ";
        Query query =   sessionFactory.getCurrentSession().createQuery(queryString);        
        query.setParameter("year", year);
        return (Student)query.uniqueResult();
    }

但它无法正常工作。如何正确编写此查询

我的学生表是

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| studentId   | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| course      | varchar(255) | YES  |     | NULL    |                |
| dob         | varchar(255) | YES  |     | NULL    |                |
| email       | varchar(255) | YES  |     | NULL    |                |
| faculty     | varchar(255) | YES  |     | NULL    |                |
| firstName   | varchar(255) | YES  |     | NULL    |                |
| gender      | int(11)      | YES  |     | NULL    |                |
| homeAddress | varchar(255) | YES  |     | NULL    |                |
| lastName    | varchar(255) | YES  |     | NULL    |                |
| linkedIn    | varchar(255) | YES  |     | NULL    |                |
| university  | varchar(255) | YES  |     | NULL    |                |
| year        | varchar(255) | YES  |     | NULL    |                |
| user_userId | bigint(20)   | YES  | MUL | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

1 个答案:

答案 0 :(得分:17)

我知道现在已经很晚了但是如果有人遇到类似的问题,你可以使用它:

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.ne("year", year));
List<Student> result = criteria.list();

或者这个:

List<Student> result = session.createQuery ("from Student where year!=:year").setParameter("year", year).list();

我不确定上面例子中的问题是什么,因为Samantha没有提供任何信息,但我的猜测是uniqueResult()引起了麻烦,因为这个查询返回一个列表而不是一个结果。