Ao tentar executar o método GET para o detalhamento de um tópico, após a autorização de acesso, ocorreu erro. Seguem o código e o detalhamento do erro. Estou usando a versão 2.4.2 do Spring Boot.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.GET, "/topicos").permitAll()
.antMatchers(HttpMethod.GET, "/topicos/*").permitAll();
}
{
"timestamp": "2021-02-23T23:14:51.162+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.alura.forum.modelo.Topico.respostas, could not initialize proxy - no Session\r\n\tat
...
"message": "failed to lazily initialize a collection of role: br.com.alura.forum.modelo.Topico.respostas, could not initialize proxy - no Session",
"path": "/topicos/1"
Consegui fazer a correção, incluindo a anotação @Transactional no método detalhar() na classe TopicosController.
@GetMapping("/{id}")
@Transactional
public ResponseEntity<DetalhesDoTopicoDto> detalhar(@PathVariable Long id) {
Optional<Topico> topico = topicoRepository.findById(id);
if (topico.isPresent()) {
return ResponseEntity.ok(new DetalhesDoTopicoDto(topico.get()));
}
return ResponseEntity.notFound().build();
}
: )