Enviado em 27/06/2018 - 19:57h
Olá a todos. Estou com um problema grande e gostaria de uma grande ajuda.
Me tiraram do ambiente que conheço bem (php) e me jogaram em um que ainda estou dando os primeiros passos (java).
Estou trabalhando em uma api rest que recebe um JSON de uma fonte externa. Acontece que nao consigo gravar no banco quando o json vem com array.
exemplificar:
se vier assim:
grava ok.
Mas se vier
o banco grava somente o nome e o telefone fica como null.
Lendo descobri que tenho que serializar / deserializar o json. Pode ser com a biblioteca Gjson, jackson, etc. Como estou trabalhando com spring boot 2 e spring 5, que vem como padrão o jackson estou usando essa biblioteca.
No domínio tenho as classes Cliente e Telefone da seguinte maneira:
E tenho a classe telefone:
criei uma classe Cliente DTO:
e no service criei a classe ClienteService que além de alguns métodos tem o seguinte método:
Sei que no DTO tenho que retirar o String numero e colocar um Telefone[] numeros;
Mas me perco ai. Alguém poderia ajudar com essa dor de cabeça?
Me tiraram do ambiente que conheço bem (php) e me jogaram em um que ainda estou dando os primeiros passos (java).
Estou trabalhando em uma api rest que recebe um JSON de uma fonte externa. Acontece que nao consigo gravar no banco quando o json vem com array.
exemplificar:
se vier assim:
{
"nome" : "fulano",
"numeroDeTelefone" : " 222222"
} grava ok.
Mas se vier
{
"nome" : "fulano"
"listaDeTelefones" :
[
{"numeroDeTelefone" : "2222"},
{"numeroDeTelefone" : "3333}
]
}
o banco grava somente o nome e o telefone fica como null.
Lendo descobri que tenho que serializar / deserializar o json. Pode ser com a biblioteca Gjson, jackson, etc. Como estou trabalhando com spring boot 2 e spring 5, que vem como padrão o jackson estou usando essa biblioteca.
No domínio tenho as classes Cliente e Telefone da seguinte maneira:
@Entity
public class Cliente
private String nome;
@ManytoMany
private List<Telefone> telefones = new ArrayList<>();
public Cliente() {}
getters e setters
E tenho a classe telefone:
@Entity
public class Telefone
private String numero;
@JsonIgnore
@ManytoMany
private List<Cliente> clientes = new ArrayList<>();
public Telefone () {}
getters e setters
criei uma classe Cliente DTO:
public class ClienteDTO
private String nome;
private String numero;
public ClienteDTO () {}
getters e setters
e no service criei a classe ClienteService que além de alguns métodos tem o seguinte método:
public Cliente converteDoDTO(ClienteDTO clienteDTO) {
Cliente c = new Cliente(clienteDTO.getNome());
Telefone t = new Telefone(clienteDTO.getNumero());
c.getTelefones().addALL(Arrays.asList(t));
t.getClientes().addALL(Arrays.asList(c));
}
Sei que no DTO tenho que retirar o String numero e colocar um Telefone[] numeros;
Mas me perco ai. Alguém poderia ajudar com essa dor de cabeça?