Error trying to save data to the database via Java

1

I am trying to save data to the database and are returning the following error:

  attempt to create merge event with null entity

Bean looks like this:

public void SalvarCliente(){
try {

ClienteDao clienteDao = new ClienteDao(); 

clienteDao.salvarCliente(cliente);
cliente = new Cliente();
System.out.println("Cliente salvo com sucesso.");
Messages.addGlobalInfo("cliente salvo com sucesso!");

} catch (RuntimeException erro) {
// mensagem de erro para o usuario 
Messages.addGlobalError("ocorreu um erro ao tentar salvar o cliente");
erro.printStackTrace();  
}
}

XHTML like this:

<h:form id="formCadastro">
<p:panel header="Cadastro" >
<p:panelGrid columns="2" >


<p:outputLabel value="Nome:" />
<p:inputText value="#{clienteBean.cliente.nome}" />

<p:outputLabel value="Telefone:" />
<p:inputText value="#{clienteBean.cliente.telefone}" />

<p:outputLabel value="CPF:" />
<p:inputText value="#{clienteBean.cliente.cpf}" />

<p:outputLabel value="Cidade:" />
<p:inputText value="#{clienteBean.cliente.cidade}" />
<p:commandButton value="Salvar" action="#{clienteBean.SalvarCliente}" process="@this" />

</p:panelGrid>

</p:panel>
</h:form>

Client class:

@Entity
public class Cliente {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
    private String nome;
    private String telefone;
    private String cidade;
    private String cpf;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Cliente other = (Cliente) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }

}
    
asked by anonymous 07.11.2017 / 20:41

1 answer

0

Make sure your Customer class is annotated with @Entity. If it has a variable annotated with @Id and @GeneratedValue

As in the documentation example: @GeneratedValue

    
08.11.2017 / 03:26