Pessoal boa tarde, Estou com um problema aqui onde eu tenho no banco PostgreSQL um campo do tipo "_text", acontece que lá eu posso gravar uma lista de string como por exemplo : {url1,url2,url3}.
O meu problema é na hora de usar o enpoint PATCH, quando eu quero atualizar esse campo, ele carrega esse atributo dentro do objeto e realiza o save. mas no banco de dados fica null.
Como é um código interno eu não posso mostrar mas vou fazer um exemplo aqui de como está hoje:
banco de dados: id: 1
nome: fabio
endereco: "{rua1},{rua2}"
agora estou fazendo o patch passando só o endereço: body:
{
"endereco": ["url1,url2,url3,url4,url5"]
}
PessoaService
public void updatePatch(PessoaSaveDto dto, Long id) {
Pessoa pessoa = getById(id); //buscando por pessoa
boolean needUpdate = false;
Pessoa mapper = saveMapper.toEntity(dto);
...
...
if (Objects.nonNull(mapper.getEndereco())) {
pessoa.setEndereco(dto.getEndereco());
needUpdate = true;
}
pessoa.setLastUpdate(LocalDateTime.now(ZoneOffset.UTC));
if (needUpdate) repositoryWrite.save(pessoa);
}
Acontece que quando ele faz a ação save, inspecionando ele vejo que dentro do objeto está carregando o atributo endereco atualizado, depois quando termina a ação e vejo no banco ele está nulo.
Lembrando que passando um novo endereço ou não, na hora de salvar ele fica nulo, ou seja, se eu quiser fazer um patch do nome para "fabio barros dos santos", ele atualiza essa informação e a coluna endereco ao invés de ficar intacta, muda para null fazendo com que perca esse dado.
O tipo do atributo endereço é:
private String[] endereco;