Hibernate простой запрос выбора ничего не возвращает - PullRequest
1 голос
/ 24 февраля 2012

Я настроил этот простой запрос Hibernate, но он ничего не возвращает, вот мой код:

      EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("timereg");
      EntityManager em = emf.createEntityManager();

     int id = em.createQuery("SELECT emp.id FROM Employee as emp WHERE emp.bsn = '398723916'").getFirstResult();
     object.getEmployee().setId(id);
     System.out.println("query returns employee id: " + id);

Глупо то, что id остается нулевым, но когда я выполняю этот запрос в PostgreSQL, он возвращает 37.

Я думаю, что hibernate не нравится мой способ реализации запроса выбора, кто-нибудь знает, что не так с моим запросом выбора?

ОТВЕТ: В запросе выбора не было ничего плохого, мне просто нужно было использовать getSingeResult () вместо getFirstResult (); Измените код на:

EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("timereg");
      EntityManager em = emf.createEntityManager();

     Object ob = em.createQuery("select id from Employee where bsn = '398723917'").getSingleResult();

        object.getEmployee().setId(Integer.parseInt(ob.toString()));
        System.out.println(ob);

Это полное решение моей проблемы, но Янфля вдохновила меня, поэтому он заслуживает всех кредитов.

1 Ответ

3 голосов
/ 24 февраля 2012

Вы используете метод getFirstResult () , который дает вам позицию записи в таблице.Вместо этого вы должны использовать getSingleResult () .См. http://docs.oracle.com/javaee/6/api/javax/persistence/Query.html.

РЕДАКТИРОВАТЬ

Вот оно:

Object ob = em.createQuery("select id from Employee where bsn = '398723917'").getSingleResult();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...