Bom dia Rodrigo, eu queria saber como posso atualizar um um registro associativo por exemplo eu tenho um cliente, vinculado a uma empresa, porém quero desvincular esse cliente dessa empresa e vincular ele a outra como faço isso no método PUT eu faço a requisição mas ele não atualiza o registro da coluna que faz a associação
public class ClienteForm {
private String cpf;
private String email;
private String nomeCompleto;
private String telefone;
private String nomeDaEmpresa;
public Cliente converterToEntity(EmpresaService empresaService){
Empresa empresa = empresaService.findByNomeEmpresaSemPage(nomeDaEmpresa);
return new Cliente(cpf, email, nomeCompleto, telefone, empresa);
}
public Cliente atualizarCliente(Long id, ClienteService clienteService){
Cliente cliente = clienteService.getOne(id);
cliente.setNomeCompleto(this.nomeCompleto);
cliente.setCpf(this.cpf);
cliente.setTelefone(this.telefone);
cliente.setEmail(this.email);
return cliente;
}
@Entity
@Table(name ="cliente")
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "nome_completo")
private String nomeCompleto;
@Column(name = "cpf")
@CPF
private String cpf;
@Column(name = "email")
@Email
private String email;
@Column(name = "telefone")
@NotNull
@NotEmpty
private String telefone;
@ManyToOne
private Empresa empresa;
public Cliente() {
}
public Cliente(String cpf, String email, String nomeCompleto, String telefone, Empresa empresa) {
this.cpf = cpf;
this.email = email;
this.nomeCompleto = nomeCompleto;
this.telefone = telefone;
this.empresa = empresa;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNomeCompleto() {
return nomeCompleto;
}
public void setNomeCompleto(String nomeCompleto) {
this.nomeCompleto = nomeCompleto;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
}
public class ClienteDTO { private Long id; private String cpf; private String email; private String nomeCompleto; private String telefone;
public ClienteDTO(Cliente cliente){
this.id = cliente.getId();
this.cpf = cliente.getCpf();
this.email = cliente.getEmail();
this.nomeCompleto = cliente.getNomeCompleto();
this.telefone = cliente.getTelefone();
}
public static Page<ClienteDTO> converterToDto(Page<Cliente> empresas){
return empresas.map(ClienteDTO::new);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNomeCompleto() {
return nomeCompleto;
}
public void setNomeCompleto(String nomeCompleto) {
this.nomeCompleto = nomeCompleto;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
@Transactional @PutMapping("/{id}") public ResponseEntity clienteOptional = clienteService.findById(id); if (!clienteOptional.isPresent()){
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Cliente não encontrado, não foi possível atualizar os dados!");
}
Cliente cliente = clienteForm.atualizarCliente(id, clienteService);
return ResponseEntity.ok(new ClienteDTO(cliente));
}