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

adicionar comentario ao topico

Boa tarde! Estou com dois problemas:

1 - Não sei como adicionar um comentário no tópico. e não foi ensinado no curso. Poderia dar um exemplo?

2 - Não consigo deletar um tópico que possui comentaríos. Cenário: Eu inseri um comentário manualmente via SQL no tópico 1 e quando faço a listagem de tópicos com comentário através do serviço (endpoint), ele aparece pra mim com o comentário inserido manualmente tudo certinho tanto no postman quanto no browser.. Mas, quando eu tento deletar o tópico com comentário, dá erro de constraint de chaves da tabela.

O erro de deleção só ocorre para tópicos que já possuem 1 ou mais comentários. Deleção de tópicos sem comentários funciona perfeitamente.

Obrigado

3 respostas
solução!

Oi John,

Poderia ser implementado assim:

@PostMapping("/{id}/comentario")
@Transactional
public ResponseEntity<ComentarioDto> cadastrarComentario(@PathVariable Long id, @RequestBody @Valid ComentarioForm form, UriComponentsBuilder uriBuilder) {
    Topico topico = topicoRepository.getOne(id);
    Comentario comentario = form.converter();
    topico.adicionarComentario(comentario);

    URI uri = uriBuilder.path("/topicos/{id}/comentario/{idComentario}").buildAndExpand(topico.getId(), comentario.getId()).toUri();
    return ResponseEntity.created(uri).body(new ComentarioDto(comentario));
}
@Entity
public class Topico {

    @OneToMany(mappedBy = "topico", cascade = CascadeType.ALL)
    private List<Comentario> comentarios = new ArrayList<>();

    public void adicionarComentario(Comentario comentario) {
        this.comentarios.add(comentario);
        comentario.setTopico(this);
    }
}

ignore=Type

Depois de alguns minutos, consegui. faltaram algumas coisas pra fazer isso mas deu certo. obrigado