2016-04-20 3 views
1

У меня есть реализация hibernate внутри моего кода JSF2, пытающегося перечислить некоторые записи из базы данных MySQL. Существуют следующие фрагменты кода: Search.java - реализация логики запросов; Student.java - реализация логики сохранения записи.Hibernate получить запрос не работает

Проблема, с которой я столкнулась, - это когда я запускаю Search.java, результат возвращается «null».

Обратите внимание: у моей БД уже много записей, и даже когда я пытался запросить Student myStudent = session.get(Student.class, 23);, он вернул мне «null».
Здесь 23 - это поле id в таблице SQL. Кроме того, таблица имеет автоматическое генерирование PK в качестве идентификатора. У меня есть еще один класс для вставки записей, которые отлично работают.

Search.java:

public class Search { 

    public static void main(String[] args) { 

     // create session factory 
     SessionFactory factory = new Configuration().configure("hibernate.cfg.xml") 
      .addAnnotatedClass(Student.class).buildSessionFactory(); 

     // create session 
     Session session = factory.getCurrentSession(); 

     try { 

      // start a transaction 
      Student tempStudent = new Student("bob", "thebuilder", "good", "[email protected]", "(456)-456 5897"); 
      session.beginTransaction(); 

      session.save(tempStudent); 

      // commit transaction 
      session.getTransaction().commit(); 
      System.out.println("id of the student is " + tempStudent.getId()); 

      session = factory.getCurrentSession(); 
      session.beginTransaction(); 

      System.out.println("student with id " + tempStudent.getId()); 
      Student myStudent = session.get(Student.class, tempStudent.getId()); 

      session.getTransaction().commit(); 

      System.out.println("Done!"); 
     } finally { 
      factory.close(); 
     } 
    } 
} 

Пожалуйста, посоветуйте, что ошибка, которую я мог бы сделать здесь. Я потратил часы на поиски в Интернете. Кроме того, пожалуйста, простите меня за мои (возможно) ошибки новобранец, я новичок в Hibernate и на этом сайте.

Дайте мне знать, если мне нужно разместить столбец ошибок или мой cfg.xml.

+0

Вы все еще испытываете проблему или уже решили? – ujulu

+0

@ujulu - Я все еще сталкиваюсь с проблемой – NJWeb

+0

Можете ли вы опубликовать свой файл конфигурации? Является ли объект «Студент» сопоставлен с таблицей «Опрос»? – ujulu

ответ

0

Как я вижу в вашем случае идентификатор tempStudent равен 0. Вам нужно получить сеанс по идентификатору сохраненного ученика. Попробуйте это:

Serializable id= session.save(tempStudent); 
... 
Student myStudent = session.get(Student.class, id); 

Также вы можете включить show_sql свойство в файле hibernate.cfg. Он будет записывать все созданные sql, так что вы можете щекотать, если это нормально.

+0

Благодарим за ответ. id временного студента сохраняется. Это отражается, когда System.out.println («id студента» + tempStudent.getId()); возвращает мне автогенерированный идентификатор для «Bob thebuilder». Я тоже попробовал вашу реализацию, это не сработало. – NJWeb

+0

Вы пытались включить show_sql? Вы можете увидеть, какие запросы sql создаются. –

+0

Да, это выход: 20 апр 2016 7:19:46 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections ИНФОРМАЦИЯ: HHH000115: Hibernate размер пула соединений: 1 (мин = 1) 20 апреля 2016 7:19:46 вечера org.hibernate.dialect.Dialect INFO: HHH000400: Использование диалекта: org.hibernate.dialect.MySQLDialect 20 апреля 2016 7:19:46 вечера org.hibernate. envers.boot.internal.EnversServiceImpl configure INFO: включена интеграция интеграции? : Правда kjjnull Hibernate: вставить в обследования (электронная почта, first_name, капот, last_name, тел) значения – NJWeb

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