2015-08-01 9 views
0

В моем спящем запросе у меня есть:зимуют java.lang.IllegalArgumentException запроса: узел пройти не может быть пустым

public void updateStudent(Student student) { 


     String hql = "update Student set article =:null,id=2" 
       +"where article=:"+ student.getArticle(); 

     sessionFactory.getCurrentSession().createQuery(hql); 

    } 

Здесь я хочу установить значения статьи студента таблицы = утратившим ID = 2 .. но

every time an error is occurring: 
node to traverse cannot be null! 
Caused by: 

java.lang.IllegalArgumentException: node to traverse cannot be null! 

мой фактический запрос MySQL является:

UPDATE student 
SET article='null', id=2 
WHERE article='xyz'; here xyz=user.getArticle() 

Что я делаю неправильно?

+0

Я думаю, что не нужно: null, просто напишите null и со статьей в where clause то же самое. –

+0

Можете ли вы дать мне правильную структуру? – Salini

+0

Вот как вы передаете параметры запросу: http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#objectstate-querying-executing-parameters. Все гораздо проще, когда вы читаете документацию. –

ответ

0

Как @JBNizet упоминает в комментарии, вам необходимо ознакомиться с документацией. Но вам нужно что-то подобное, чтобы установить свой параметр.

public void updateStudent(Student student) { 
    String hql = "update Student set article = null, id = 2" 
     + " where article = :article"; 

    sessionFactory.getCurrentSession() 
     .createQuery(hql) 
     .setParameter("article", student.getArticle()) ... etc 

} 

P.S. Я не понимаю, почему вы устанавливаете идентификатор своего ученика, когда вы, кажется, удаляете значение статьи.