Hibernate DAO не вставляет строки в базу данных MyEclipse - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь вставить новый объект в мою базу данных. Я следовал пошаговой инструкции, но, похоже, она не работает для меня. В уроке была следующая строка:

Транзакция tx = dao.GetSession (). BeginTransaction ();

GetSession не появляется, я получаю сообщение об ошибке «GetSession () не виден из DaoHibernateSupport». Я заменил строку следующим:

Transaction tx = dao.getSessionFactory().getCurrentSession().beginTransaction(); 

но затем я получил нулевое исключение для текущей сессии.

Я прочитал онлайн и добавил current_session_context property, установленный как "thread".

Кажется, что теперь все работает, я не получаю никаких исключений, но строки в моей базе данных MySql по-прежнему отсутствуют. Таблица InnoDB.

Вот мой окончательный код:

         Banner banner = new Banner();

     banner.setUrl(url);

     banner.setCategorie(categorie);

     banner.setCuvinteCheie(cuvinte_cheie);

     banner.setMaxCpc(cpc);

     banner.setPath(cale);

     banner.setPaththumb(caleThumb);

     banner.setAdvertiserId(Integer.parseInt(session.getAttribute("UserID").toString()));

     BannerDAO dao = new BannerDAO();

     SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

     dao.setSessionFactory(sessionFactory);

     Transaction tx = dao.getSessionFactory().getCurrentSession().beginTransaction();

     dao.save(banner);

     tx.commit();

     dao.getSessionFactory().getCurrentSession().close();
  • Так что здесь не возникает никаких исключений, но когда я обращаюсь к базе данных, в таблице нет строк.

    Не могли бы вы мне помочь? Спасибо!

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Я понял это.Когда я использовал реверс-инжиниринг в MyEclipse, я создал SpringDAO вместо BasicDAO.Теперь метод getSession () работает нормально.

1 голос
/ 16 мая 2011

Вы можете попробовать

Transaction tx = dao.getSessionFactory().openSession().beginTransaction();

вместо

Transaction tx = dao.getSessionFactory().getCurrentSession().beginTransaction();
...