【问题标题】:Not equal query in hql not workhql中的不相等查询不起作用
【发布时间】:2015-05-05 22:41:02
【问题描述】:

我正在处理 hql 中的“不等于”查询。

 @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    |                |
+-------------+--------------+------+-----+---------+----------------+

【问题讨论】:

  • 定义“它不能正常工作”。恰恰。粘贴您获得的完整堆栈跟踪,并发布用于执行该查询的代码。

标签: java hibernate hql


【解决方案1】:

我知道已经很晚了,但是如果有人遇到类似的问题,您可以使用这个:

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() 会造成麻烦,因为此查询返回一个列表而不是一个结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2016-03-02
    • 1970-01-01
    • 2014-10-19
    • 2014-04-25
    相关资源
    最近更新 更多