2010-04-13 4 views
0

У меня есть класс Project, который имеет Set пользовательских историй, называемых userStories12many. У меня неприятности, пытаясь получить проект, который имеет определенную в пользовательские истории набора getComponent(int userStoryID)Проблема языка запросов HIbernate

Я думаю, им на правильном пути, но я не знаю, что я сделал неправильно

public Projects getComponent(int userStoryID) { 
    Session session = SessionFactoryHelper.getSessionFactory() 
    .getCurrentSession(); 
    session.beginTransaction(); 

    List<Projects> compo = session.createQuery("select p " 
    + "from Projects as p inner join fetch p.userStories12many as u " 
    + "where u.storyId='" + userStoryID + "'").list(); 
    session.getTransaction().commit(); 
    return compo.get(0); 

} 
+0

определить «неприятности». Вы получаете исключение? Если да, то какой? Вы ошибаетесь? Большинство отчетов об ошибках, которые я получаю от обычных пользователей, более ясны, чем ваш вопрос. – meriton

+0

В вашем вопросе вы говорите, что у вас есть класс «Проект», но в вашем примере у вас есть ссылки на класс «Проекты» (множественное число проекта). Это опечатка или вы имеете в виду два отдельных класса? –

+0

Создание запросов hql вручную (строка concat) является чрезвычайно склонной к ошибкам. Я предлагаю использовать @NamedQuery. Они будут проверяться на правильность, кэшироваться и безопаснее (без SQL-инъекций). – whiskeysierra

ответ

0

Есть несколько что мне не нравится в вашем коде:

  1. Лучше связывать параметры, а не вставлять их значение непосредственно в строку запроса.
  2. Как получить идентификатор? разве это не int?
  3. Вы получаете доступ к результатам запроса после того, как сделка закончилась, который часто является плохой идеей
+0

Ive исправил ваши последние два очка, но все еще не работает. Он возвращает null. – mslatf

Смежные вопросы