У меня есть веб-приложение, использующее 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();
база данных - оракул.
это звучит для меня из ваших комментариев, что данные не совершаются. Попробуйте создать транзакцию перед выполнением обновления и после ее совершения:
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
если будут выбрасываться какие-либо исключения.