Sobre este tópico https://cursos.alura.com.br/forum/topico-alteracao-no-banco-de-dados-61630
Resolveu, mas agora dá outro erro de EntityManagerFactory is closed
Criei esta classe:
package br.com.netsoft.dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtility {
private static final EntityManagerFactory emFactory;
static {
emFactory = Persistence.createEntityManagerFactory("desif");
}
public static EntityManager getEntityManager() {
return emFactory.createEntityManager();
}
public static void close() {
emFactory.close();
}
}
No DAO genérico, criei estes métodos:
protected EntityManager getEntityManager() {
return JPAUtility.getEntityManager();
}
private void jpaFechar() {
JPAUtility.close();
}
private void fechar() {
getEntityManager().clear();
jpaFechar();
}
Método de buscar
public Set<?> listar(GHEntity entidadeUm, GHEntity entidadeDois,
Integer primeiroRegistro, Integer totalRegistros,
String... ordenacao) throws Exception {
getEntityManager();
List aux = new ArrayList<>();
Session sessao = (Session) getEntityManager().getDelegate();
Criteria crit = sessao.createCriteria(entidadeUm.getClass());
montaRestricoes(entidadeUm, entidadeDois, crit,
new DadosDeSuporteAPesquisa());
contarTodos(entidadeUm, entidadeDois);
ordenar(crit, ordenacao);
if (primeiroRegistro >= 0 && totalRegistros > 0) {
if (!(total.equals(new Long(0)))) {
crit.setFirstResult(primeiroRegistro);
crit.setMaxResults(totalRegistros);
}
}
aux = crit.list();
sessao.evict(entidadeUm);
jpaFechar();
return aux;
}
Entendi que o problema é que o EntityManagerFactory, fechou. Mas ainda não descobri como ajustar
00:04:45,845 ERROR [stderr] (default task-17) java.lang.IllegalStateException: EntityManagerFactory is closed
00:04:45,845 ERROR [stderr] (default task-17) at org.hibernate.jpa.internal.EntityManagerFactoryImpl.validateNotClosed(EntityManagerFactoryImpl.java:388)
00:04:45,845 ERROR [stderr] (default task-17) at org.hibernate.jpa.internal.EntityManagerFactoryImpl.internalCreateEntityManager(EntityManagerFactoryImpl.java:342)
00:04:45,848 ERROR [stderr] (default task-17) at org.hibernate.jpa.internal.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:313)
00:04:45,850 ERROR [stderr] (default task-17) at br.com.netsoft.dao.JPAUtility.getEntityManager(JPAUtility.java:15)
00:04:45,850 ERROR [stderr] (default task-17) at br.com.netsoft.dao.GHDAO.getEntityManager(GHDAO.java:71)
00:04:45,850 ERROR [stderr] (default task-17) at br.com.netsoft.dao.GHDAO.listar(GHDAO.java:106)
00:04:45,850 ERROR [stderr] (default task-17) at br.com.netsoft.configuracao.auth.JwtUserDetailsService.loadUserByUsername(JwtUserDetailsService.java:28)
00:04:45,850 ERROR [stderr] (default task-17) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter$UserDetailsServiceDelegator.loadUserByUsername(WebSecurityConfigurerAdapter.java:442)
00:04:45,851 ERROR [stderr] (default task-17) at br.com.netsoft.configuracao.auth.JwtAuthorizationTokenFilter.doFilterInternal(JwtAuthorizationTokenFilter.java:74)