в спящий режим база данных не отвечает

1

У меня есть веб-приложение, использующее hibernate для доступа к базе данных. У меня есть метод обновления в классе DAO, когда я запускаю этот метод, я не получаю ошибки в консоли, но база данных не отвечает, также после запуска класса я не могу получить таблицу с помощью sqlDeveloper. это показано в консоли eclipse после запуска класса:

May 12, 2014 11:29:57 AM org.hibernate.engine.internal.StatisticalLoggingSessionEventListener end
INFO: Session Metrics {
    13975 nanoseconds spent acquiring 1 JDBC connections;
    0 nanoseconds spent releasing 0 JDBC connections;
    40413377 nanoseconds spent preparing 1 JDBC statements;
    1130672 nanoseconds spent executing 1 JDBC statements;
    0 nanoseconds spent executing 0 JDBC batches;
    0 nanoseconds spent performing 0 L2C puts;
    0 nanoseconds spent performing 0 L2C hits;
    0 nanoseconds spent performing 0 L2C misses;
    0 nanoseconds spent executing 0 flushes (flushing a total of 0 entities and 0 collections);
    0 nanoseconds spent executing 0 partial-flushes (flushing a total of 0 entities and 0 collections)
}

здесь находится тело метода обновления:

session = hu.getSessionFactory().openSession();         
Query q= session.createQuery("update MessageQueue set   returnStatus=:returnStatus where id=:msg_id");
System.out.println("QQQQQQQQQQQQQQQQQQQQQQUERY ");
q.setParameter("msg_id", id);
System.out.println("1111111111111111111111111111 param "+id);
q.setParameter("returnStatus", returnStatus);
System.out.println("222222222222222222222 param "+returnStatus);
System.out.println(q.getQueryString());
int res=q.executeUpdate();
session.close();

база данных - оракул.

  • 0
    Когда вы говорите «база данных не отвечает», что именно вы имеете в виду? Приложение зависает? Обновление кажется успешным, но не вносит никаких изменений в базу данных? Когда вы говорите, что «не можете извлечь таблицу», вы имеете в виду, что при запросе таблицы произошла ошибка или что ожидаемых там данных там нет?
  • 0
    Я имею в виду, я не получаю никакого ответа от базы данных! Записи, которые я пытаюсь обновить, заблокированы моим пользователем, и я не могу получить их, используя любые инструменты, такие как sql developer.
Теги:
hibernate
jdbc
java-ee

1 ответ

1
Лучший ответ

это звучит для меня из ваших комментариев, что данные не совершаются. Попробуйте создать транзакцию перед выполнением обновления и после ее совершения:

session = hu.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();   // add this line
Query q= session.createQuery("update MessageQueue set   returnStatus=:returnStatus where id=:msg_id");
System.out.println("QQQQQQQQQQQQQQQQQQQQQQUERY ");
q.setParameter("msg_id", id);
System.out.println("1111111111111111111111111111 param "+id);
q.setParameter("returnStatus", returnStatus);
System.out.println("222222222222222222222 param "+returnStatus);
System.out.println(q.getQueryString());
int res=q.executeUpdate();
transaction.commit();                                   // add this line too
session.close();

Также было бы неплохо откатить транзакцию в блоке catch если будут выбрасываться какие-либо исключения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню