Olá, estou tentando gravar a sessão do usuario enquanto ele navega na aplicação web, porém consigo gravar quando ele entra no site, mas quando ele muda de página o sistema atualiza um campo chamado saida e cria outro registo com o mesmo ID da sessão…
Quando ele troca de pagina acontece o erro
java.lang.IllegalStateException: Transaction already active
Esse é o codigo Java que coloquei para gravar:
public void create(T entity) {
entityManager.getTransaction().begin();
entityManager.persist(entity);
entityManager.getTransaction().commit();
}
public void update(T entity) {
entityManager.getTransaction().begin();
entityManager.merge(entity);
entityManager.getTransaction().commit();
}
public void destroy(T entity) {
entityManager.getTransaction().begin();
entityManager.remove(entity);
entityManager.getTransaction().commit();
}
Porém se eu colocar esse codigo em cima de cada Começo de transação recebo um erro:
@ComponentpublicclassSessaologRepositoryImplextendsRepository<Sessaolog,Long>implementsSessaologRepository{SessaologRepositoryImpl(EntityManagerentityManager){super(entityManager);}@OverridepublicSessaologfindByLastSessao(LongsessaoId){Queryquery=entityManager.createQuery("select s from Sessaolog s where id = (select max(id) from Sessaolog where sessao_id = :sessao_id)");System.out.println(sessaoId);query.setParameter("sessao_id",sessaoId);try{return(Sessaolog)query.getSingleResult();}catch(Exceptione){returnnull;}}}