0
Good morning, there has been a problem in the application that I work when I persist the object in the database I see the jboss log showing the Insert instruction plus the id of the object remains null. Does not update. How do I prevent that? Forcing completion 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;
}
Follows the DAO:
public void salvar(E entidade) {
em.persist(entidade);
}
14:36:26,890 INFO [stdout] ( ) Hibernate: Insert into person (id_Interliga_Log_Sistemas, Cpf, dataAlteracao, dataFinal, dataInclusion, dataNascization, document_identity, email, name, personal, sex, id_typePeople) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
14:36:31,291 INFO [stdout] ( ) com.model.servico.Personal service id = null
Note that I get id that should be generated by persist and id remains NULL
Can you show your code to make it easier to help? Thank you!
– Thiago Luiz Domacoski
It’s easier to answer that question by looking at the code :)
– Juliano Alves
The
@Id
is noted with@GeneratedValue
? To update on time you must force the flush, then after theem.persist(entidade);
doem.flush();
, see if this solves for you.– Bruno César
well I thought doing this more does not disturb the transanção if there is error to give roolback
– José Humberto Fróes Júnior