Problema com transação usando CDI + Hibernate

2 respostas
R

Estou tentando usar CDI + Hibernate no meu projeto.
Quero controlar as transações dentro de um Interceptor, até ai tudo bem, abro a transação no Interceptor, mas quanto tento dar um session.save no meu dao retorna o seguinte erro: org.hibernate.HibernateException: save is not valid without active transaction.

Meu dao

@Inject
private SessionFactory factory;

@Override
@Transactional
public void save(Produto produto) {
  
    factory.getCurrentSession().save(produto);
}

Meu Interceptor:

@Inject
private SessionFactory factory;

@AroundInvoke
public Object invoke(InvocationContext context) throws Exception {
    Session session = factory.openSession();
    session.beginTransaction();
    Object methodResult = context.proceed();
    session.getTransaction().commit();
    return methodResult;

}

Meu producer

@Produces
@RequestScoped
public SessionFactory createSessionFactory() {
    return HibernateUtil.getSessionFactory();
}

2 Respostas

euprogramador

Cara usa o deltaspike ele já tem uma extensão para cdi e faz transações. O seu interceptor não tem tratamentos que são importantes e necessários. Melhor usaé o deltaspike mesmo…

R

Valeu, vou pesquisar sobre.

Criado 19 de dezembro de 2015
Ultima resposta 20 de dez. de 2015
Respostas 2
Participantes 2