Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Quais as alterações preciso fazer para salvar novos clientes?

Boa tarde! Depois da alteração na classe Cliente, criando a classe DadosPessoais, cadastrei um novo cliente mas somente o Id foi salvo na tabela clientes, nas demais colunas nome e cpf ficaram com null. Tenho que criar a tabela DadosPessoais também? Qual a melhor forma para resolver?

2 respostas

Oi Flavio!

Posta aqui como estão as suas classes.

solução!

Olá Rodrigo! Consegui salvar na tabela clientes mesmo depois que adicionei os seters do nome e cpf na classe Cliente. Acho que a ideia é essa mesmo, obrigado!

package br.com.alura.loja.modelo;

import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table;

@Entity @Table(name = "clientes") public class Cliente {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Embedded
private DadosPessoais dadosPessoais;

public Cliente() {}

public Cliente(String nome, String cpf) {
    this.dadosPessoais = new DadosPessoais(nome, cpf);
}

public String getNome() {
    return this.dadosPessoais.getNome();
}

public String getCpf() {
    return this.dadosPessoais.getCpf();
}

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

public void setCpf(String cpf) {
    this.dadosPessoais.setCpf(cpf);
}
public Long getId() {
    return id;
}

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

public DadosPessoais getDadosPessoais() {
    return dadosPessoais;
}

}

package br.com.alura.loja.modelo;

import javax.persistence.Embeddable;

@Embeddable public class DadosPessoais {

private String nome;
private String cpf;

public DadosPessoais() {}

public DadosPessoais(String nome, String cpf) {
    this.nome = nome;
    this.cpf = cpf;
}

public String getNome() {
    return nome;
}

public String getCpf() {
    return cpf;
}

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

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

}

package br.com.alura.loja.dao;

import java.util.List;

import javax.persistence.EntityManager;

import br.com.alura.loja.modelo.Cliente; import br.com.alura.loja.modelo.DadosPessoais;

public class ClienteDao {

private EntityManager em;

public ClienteDao(EntityManager em) {
    this.em = em;
}

public void cadastrar(Cliente cliente) {
    this.em.persist(cliente);
}

public void atualizarProduto(Cliente cliente) {
    this.em.merge(cliente);
}

public void remover(Cliente cliente) {
    this.em.remove(cliente);
}

public Cliente buscarPorId(Long id) {
    return em.find(Cliente.class, id);
}

public List<Cliente> buscarTodos(){
    String jpql = "SELECT c FROM Cliente c";
    return em.createQuery(jpql, Cliente.class).getResultList();
}

public List<Cliente> buscarPorNome(String nome){
    String jpql = "SELECT c FROM Cliente c WHERE c.dadosPessoais.nome = ?1";
    return em.createQuery(jpql, Cliente.class)
            .setParameter(1, nome).getResultList();
}

}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software