2015-03-04 28 views
5

Przeszukuję zapytanie "nie równe" w hql.Nierównomierne zapytanie w hql nie działa

@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(); 
    } 

ale to nie działa properly.How napisać zapytanie poprawnie

Moja tabela Student

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

Zdefiniuj "nie działa poprawnie". Dokładnie. Wklej pełny ślad stosu, a następnie opublikuj kod użyty do wykonania tego zapytania. –

Odpowiedz

12

Wiem, że jest późno, ale jeśli ktoś jest posiadanie podobny problem, można użyć to:

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

Albo to:

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

Nie jestem pewien, na czym polega problem w powyższym przykładzie, ponieważ Samantha nie podała żadnych informacji, ale domyślam się, że uniqueResult() powoduje problemy, ponieważ to zapytanie zwraca listę, a nie jeden wynik.