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

ERRO: There was an unexpected error (type=Internal Server Error, status=500).

Não consigo rodar o topicos, me retorna erro 500:

"There was an unexpected error (type=Internal Server Error, status=500)."

package br.com.alura.forum.controller;

import java.util.Arrays; import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController;

import br.com.alura.forum.controller.dto.TopicoDto; import br.com.alura.forum.modelo.Curso; import br.com.alura.forum.modelo.Topico;

@RestController public class TopicosController {

@RequestMapping("/topicos")
public List<TopicoDto> List(){
    Topico topico = new Topico("Dúvida", "Dúvida com spring", new Curso("Spring", "Programacão"));

    return TopicoDto.converter(Arrays.asList(topico, topico, topico));        
}

}

9 respostas

Oi Rafael,

Posta aqui o código da sua classe TopicoDto.

package br.com.alura.forum.controller.dto;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

import br.com.alura.forum.modelo.Topico;

public class TopicoDto {

    private long id;
    private String titulo;
    private String mensagem;
    private LocalDateTime dataCriacao;

    public TopicoDto(Topico topico) {
        this.id = topico.getId();
        this.titulo = topico.getTitulo();
        this.mensagem = topico.getMensagem();
        this.dataCriacao = topico.getDataCriacao();

    }

    public long getId() {
        return id;
    }
    public String getTitulo() {
        return titulo;
    }
    public String getMensagem() {
        return mensagem;
    }
    public LocalDateTime getDataCriacao() {
        return dataCriacao;
    }

    public static List<TopicoDto> converter(List<Topico> topicos) {
        return topicos.stream().map(TopicoDto::new).collect(Collectors.toList());
    }

}

Está tudo certinho.

Qual o erro que aparece no console do Eclipse? Posta aqui a stack trace completa do erro, por favor.

solução!

Boa tarde Rodrigo, consegui resolver. O id estava como "Long", mudei para "long".

agora estou com o erro abaixo.

    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == 0) ? 0 : id.hashCode());
        return result;
    }

erro "cannot invoke hashcode() on the primitve type long"

Oi Rafael,

Na verdade o atributo tem que ser Long( L maiúsculo) tanto na entidade quanto no DTO.

Certo. mudei para L maiusculo de novo. no console parece tudo certo, só tem esse warning. 2021-04-01 19:01:27.864 WARN 1948 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: (was java.lang.NullPointerException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: java.util.ArrayList[0]->br.com.alura.forum.controller.dto.TopicoDto["id"])]

Tem que mudar tambem os métodos getId/setId na entidade e no Dto, pois deve estar com long ainda.

Deu certo...Obrigado!