Я пытаюсь узнать о Hibernate и Apache Struts2 и столкнулся с проблемой. Я получаю эту ошибку:Hibernate & Apache Struts2 - Транзакция не успешно запущена
HTTP Status 500 - Transaction not successfully started on line
com.dao.struts.UserSession.list(UserSession.java:58)
Hibernate Helper Класс:
package com.dao.util;
//imports here
public class HibHelper
{
private static SessionFactory sessionFactory = buildSession();
private static ServiceRegistry serviceRegistry;
public static SessionFactory buildSession()
{
try {
Configuration config = new Configuration();
config.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
sessionFactory = config.buildSessionFactory(serviceRegistry);
return sessionFactory;
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void close() {
getSessionFactory().close();
}
}
UserSession класс
package com.dao.struts;
//imports here
public class UserSession extends HibHelper
{
public Data add(Data user)
{
Session session = HibHelper.getSessionFactory().openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
session.close();
return user;
}
public Data delete(Long id)
{
Session session = HibHelper.getSessionFactory().openSession();
session.beginTransaction();
Data user = (Data) session.load(Data.class, id);
if(user != null)
session.delete(user);
session.getTransaction().commit();
session.close();
return user;
}
public List<Data> list()
{
Session session = HibHelper.getSessionFactory().openSession();
session.beginTransaction();
List<Data> userList = null;
try {
userList = (List<Data>) session.createQuery("from Data").list();
} catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();
}
session.getTransaction().commit();
session.close();
return userList;
}
}
Это говорит ошибка в методе list()
в UserSession.java
на этой линии: session.getTransaction().commit();
Он отлично добавляет в базу данных. Я просто не могу его выводить. Мое имя базы данных mo
и имя таблицы USERS
. Что я делаю не так? Любая помощь будет оценена!
Я добавил, что к методу списка(), заменяющей 'session.getTransaction(). Совершить() ; ', но я все равно получаю ту же ошибку. – cress
Nice catch с методом удаления. Однако другая проблема все еще стоит. – cress
Большое вам спасибо! Я поставил этот оператор if после try/catch, поэтому он не работал раньше. – cress