i = (Integer) session.createSQLQuery("SELECT User_id FROM User WHERE Login = :str").uniqueResult();
получаю
Caused by: org.hibernate.QueryException: Not all named parameters have been set: [str] [SELECT User_id FROM User WHERE Login = :str]
какие еще сеты? все есть! не к str же — передается в кач параметра
если так
i = (Integer) session.createSQLQuery("SELECT User_id FROM User WHERE Login = :str").setString("Login",str).uniqueResult();
то
Parameter Login does not exist as a named parameter in [SELECT User_id FROM User WHERE Login = :str]
если так
List<Integer> res = new ArrayList<Integer>(session.createQuery("select u.User_id from User as u where u.Login = :str ").list());
то
Caused by: org.hibernate.QueryException: Not all named parameters have been set: [str] [select u.User_id from User as u where u.Login = :str ]
если так
List<User> us = new ArrayList<User>(session.createQuery("from User where Login = "+ str).list());
то
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'newLogin' in 'where clause'
и наконец
List<User> us = new ArrayList<User>(session.createQuery("from User where Login = :str").list());
то
Caused by: org.hibernate.QueryException: Not all named parameters have been set: [str] [from User where Login = :str]
А>Caused by: org.hibernate.QueryException: Not all named parameters have been set: [str] [from User where Login = :str]
А>Есть ли знатоки этой штуки??? Я запутался!!!
читай описание: "Not all named parameters have been set"
List<User> us = new ArrayList<User>(session.createQuery("from User where Login = :str").list());
пытаешься выполнить SELECT, не указав при этом параметра, по которому производится поиск.
А>i = (Integer) session.createSQLQuery("SELECT User_id FROM User WHERE Login = :str").uniqueResult();
А>
А>получаю
А>Caused by: org.hibernate.QueryException: Not all named parameters have been set: [str] [SELECT User_id FROM User WHERE Login = :str] А>какие еще сеты? все есть! не к str же — передается в кач параметра
Значение параметра str не задано для запроса (см. следующий запрос)
А>если так
А>
А>i = (Integer) session.createSQLQuery("SELECT User_id FROM User WHERE Login = :str").setString("Login",str).uniqueResult();
А>
А>то
А>Parameter Login does not exist as a named parameter in [SELECT User_id FROM User WHERE Login = :str]
Значение переменной str не задано, в метод setString необходимо передать имя переменной, в данном случае str, т.е. так
А>
А>i = (Integer) session.createSQLQuery("SELECT User_id FROM User WHERE Login = :str").setString("str",str).uniqueResult();
А>
остальное аналогично
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re[2]: Пните в ухо
От:
Аноним
Дата:
18.08.10 15:50
Оценка:
Здравствуйте, 6lackbird, Вы писали:
А>>Parameter Login does not exist as a named parameter in [SELECT User_id FROM User WHERE Login = :str]
6>Значение переменной str не задано, в метод setString необходимо передать имя переменной, в данном случае str, т.е. так
А>>
А>>i = (Integer) session.createSQLQuery("SELECT User_id FROM User WHERE Login = :str").setString("str",str).uniqueResult();
А>>
6>остальное аналогично
Огромное спасибо чуть разобрался, при такой строчке которую вы написали выдает Caused by: java.lang.NullPointerException: null
такой же рез-тат при
i = (Integer) session.createQuery("select u.User_id from User as u where u.Login = :str").setParameter("str",str).uniqueResult();
а при
List<Integer> res = new ArrayList<Integer>(session.createQuery("select u.User_id from User as u where u.Login = :str ").setParameter("str",str).list());
Caused by: org.hibernate.SessionException: Session was already closed
но зато при
List<User> us = new ArrayList<User>(session.createQuery("from User where Login = :str").setParameter("str",str).list());
все работает — обьясните доходчиво ради бога почему? я так и не возьму в толк!!!
Здравствуйте, Аноним, Вы писали:
А>Огромное спасибо чуть разобрался, при такой строчке которую вы написали выдает Caused by: java.lang.NullPointerException: null А>такой же рез-тат при
А>
А>i = (Integer) session.createQuery("select u.User_id from User as u where u.Login = :str").setParameter("str",str).uniqueResult();
А>
Попробуем потелепатировать
тут наверное пропущено
int i;
i = (Integer) session.createQuery("select u.User_id from User as u where u.Login = :str").setParameter("str",str).uniqueResult();
Запрос вернул null, и далее ты пытаешься закастить его к int, что и приводит к NPE
А>а при
А>
А>List<Integer> res = new ArrayList<Integer>(session.createQuery("select u.User_id from User as u where u.Login = :str ").setParameter("str",str).list());
А>
А>Caused by: org.hibernate.SessionException: Session was already closed
сессия закрыта, смотреть на код вокруг
А>но зато при
А>
А>List<User> us = new ArrayList<User>(session.createQuery("from User where Login = :str").setParameter("str",str).list());
А>
выделенное лишнее, а в списке us потом что нить есть?
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re[4]: Пните в ухо
От:
Аноним
Дата:
21.08.10 13:19
Оценка:
Здравствуйте, 6lackbird, Вы писали:
int i не забыл, почему закрыта сессия не пойму, а в us обьект пользователя который нужен!
Зачем вообще использовать хибернейт, если писать запросы руками, да еще в конкретном SQL, а не в HSQL и при этом пытаться выбрать не объекты, а примитивные типы по отдельности?
Подозреваю, что Session was already closed возникается из-за генерирующихся двух запросов при попытке выбрать Integer. Первый запрос выбирает объект User, а вторым идет попытка выбрать конкретное поле этого объекта. Хотя по идее хибернейт должен сам понять, что все данные полей уже есть.