org.hibernate.transactionexception вложенные транзакции не поддерживаются Что я делаю не так? - PullRequest
0 голосов
/ 25 июня 2019

Я не знаю, почему я получаю эту ошибку:

javax.faces.FacesException: #{loginBean.login}: org.hibernate.TransactionException: nested transactions not supported

public class UsuarioDaoImpl implements UsuarioDao {

@Override
public FwUsuarios findByUsuario(FwUsuarios usuario) {
  FwUsuarios model = null;

 System.out.println("El usuario es : "+usuario.getClaveUsuario());
 String sql = "FROM FwUsuarios WHERE claveUsuario='"+usuario.getClaveUsuario()+"'";
 Session sesion = HibernateUtil.getSessionFactory().getCurrentSession();
  try{

      sesion.beginTransaction();
      model=(FwUsuarios) sesion.createQuery(sql).uniqueResult();
      sesion.beginTransaction().commit();
  }
  catch(Exception e){
  sesion.beginTransaction().rollback();
  }

  return model;
}

@Override
public FwUsuarios login(FwUsuarios usuario) {
    FwUsuarios model = this.findByUsuario(usuario);
    if(model!= null){
    if(usuario.getPasswordUsuario().equals(model.getPasswordUsuario()))
        model = null;
    }
    return model;
}

}



public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
    try {
        // Create the SessionFactory from standard (hibernate.cfg.xml) 
        // config file.
        sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    } catch (HibernateException ex) {
        // Log the exception. 
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    return sessionFactory;
}
}

1 Ответ

0 голосов
/ 25 июня 2019

Вызов beginTransaction без необходимости несколько раз является проблемой. Вместо этого следует вызвать его один раз, а затем использовать сохраненную ссылку:

org.hibernate.Transaction tx;
//...
tx = session.beginTransaction();
//.. some database work here
tx.commit();
//when something went wrong
tx.rollback();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...