Saving jpa objects in spring transaction

Asked

Viewed 410 times

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

  • 1

    Can you show your code to make it easier to help? Thank you!

  • 1

    It’s easier to answer that question by looking at the code :)

  • The @Id is noted with @GeneratedValue? To update on time you must force the flush, then after the em.persist(entidade); do em.flush();, see if this solves for you.

  • well I thought doing this more does not disturb the transanção if there is error to give roolback

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.