Hello, I have a problem in the application that I work with when I persist the object in the database. I see the jboss log shows the insert statement plus the id of the object continues to be null. Not updated. How do I avoid this? Forcing the finalization of a spring transaction?
Follow the service:
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public void salvar(Pessoa editado){
try{
Usuario usuario = LoginControlador.getInstancia().getUsuarioSessao();
editado.setInterligaLogSistemas(usuario.getInterligaLogSistemas());
editado = validacao(editado);
if(!editado.isAlterou() || validaAlterarStatus()){
System.out.println("ERRO ao SALVAR PESSOA.");
return;
} else {
ContextoUtil.limparMessageList();
if (editado.getId() == null || editado.getId() == 0) {
editado.setId(null);
//Padronizando todos os nome em caixa alta
editado.setNome(editado.getNome().toUpperCase());
editado.setNome(ModificarStrings.removerEspacosDesnecessarios(editado.getNome()));
if(validarDuplicacao(editado)){
dao.salvar(editado);
} else {
String str = "Não é permitido cadastrar pessoas com mesmo CPF.";
CentralMensagens.setarMensagemAviso(str);
throw new Exception(str);
}
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Salvo!", "Com sucesso!"));
}
else {
alterar(editado);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Alterado!", "Com sucesso!"));
}
ContextoUtil.setObjetoSessao(nomeObjetoSessao, editado);
}
System.out.println(getClass().getName().toString() + " id = " + editado.getId());
}catch(NullPointerException e){
getLog().gravarArquivo(e);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Houve uma falha.", "Contactar o Administrador do Sistema."));
} catch(Exception e){
getLog().gravarArquivo(e);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Não foi possivel inserir ou alterar os dados.", "Contactar o Administrador do Sistema."));
e.printStackTrace();
}
return;
}
Follow the DAO:
public void salvar(E entidade) {
em.persist(entidade);
}
14: 36: 26,890 INFO [stdout] () Hibernate: insert into person (System_Interliga_Log_Sistemas, cpf, dataChange, dataFinal, dataInclusao, dataCast, identity_identity, email, name, person, gender, id_Type) values (?,?,?,?,?,?,?,?,?,?, ?,?)
14: 36: 31,291 INFO [stdout] () com.model.servico.PessoaService id = null
Notice that I get id that should be generated by persist and id continues NULL