3
respostas

[Dúvida] erro String.toLowerCase em series.GetTitulo ()

Seguinte galera to preso

Quando eu rodo o codigo e seleciono o 2 pra buscar series,

Seleciono a serie,

e ele me retornar o seguinte erro : Caused by: java.lang.NullPointerException: Cannot invoke "String.toLowerCase()" because the return value of "br.com.alura.screenmatch.model.Serie.getTitulo()" is null

porem ja tentei fazer ym try catch, no get titulo e nao consegui resolver nao entendi o motivo

segue o codigo:

package br.com.alura.screenmatch.model;

import jakarta.persistence.*;

import java.util.ArrayList;
import java.util.List;
import java.util.OptionalDouble;

@Entity
@Table (name = "series")
public class Serie {
    @Id
    @GeneratedValue( strategy = GenerationType.IDENTITY)
    private long id;
    @Column (unique = true)
    private String titulo;
    private Integer totalTemporadas;
    private Double avaliacao;
    private String atores;
    private String capa;
    @Enumerated(EnumType.STRING)
    private Categoria genero;
    private String sinopse;

    @OneToMany(mappedBy = "serie", cascade = CascadeType.ALL)
     private List<Episodio> episodios = new ArrayList<>();



    public Serie(DadosSerie dadosSerie){
        this.titulo = dadosSerie.titulo();
        this.totalTemporadas = dadosSerie.totalTemporadas();
        this.avaliacao = OptionalDouble.of(Double.valueOf(dadosSerie.avaliacao())).orElse(0);
        this.genero = Categoria.fromString(dadosSerie.genero().split(",")[0].trim());
        this.atores = dadosSerie.atores();
        this.capa = dadosSerie.capa();
        this.sinopse = dadosSerie.sinopse();
    };

    public Serie (){};

    public String getTitulo() {

        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public Integer getTotalTemporadas() {
        return totalTemporadas;
    }

    public void setTotalTemporadas(Integer totalTemporadas) {
        this.totalTemporadas = totalTemporadas;
    }

    public Double getAvaliacao() {
        return avaliacao;
    }

    public void setAvaliacao(Double avaliacao) {
        this.avaliacao = avaliacao;
    }

    public String getAtores() {
        return atores;
    }

    public void setAtores(String atores) {
        this.atores = atores;
    }

    public String getCapa() {
        return capa;
    }

    public void setCapa(String capa) {
        this.capa = capa;
    }

    public Categoria getGenero() {
        return genero;
    }

    public void setGenero(Categoria genero) {
        this.genero = genero;
    }

    public String getSinopse() {
        return sinopse;
    }

    public void setSinopse(String sinopse) {
        this.sinopse = sinopse;
    }

    public List<Episodio> getEpisodios() {
        return episodios;
    }

    public void setEpisodios(List<Episodio> episodios) {
        this.episodios = episodios;
    }

    @Override
    public String toString() {
        return
                "genero=" + genero +
                ", titulo='" + titulo + '\'' +
                ", totalTemporadas=" + totalTemporadas +
                ", avaliacao=" + avaliacao +
                ", atores='" + atores + '\'' +
                ", capa='" + capa + '\'' +
                ", sinopse='" + sinopse + '\'' ;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
}
3 respostas

Oi Deivid,

E como está o seu objeto DadosSerie? O seu objeto Serie é construído a partir de um DadosSerie, então imagino que o problema está nele. O DadosSerie deve ter algum detalhe errado que está impedindo ele de mapear o valor do título, fazendo com que o atributo titulo do objeto Serie seja null. Veja se você está usand o alias correto para o título:

@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosSerie(@JsonAlias("Title") String titulo,
                         @JsonAlias("totalSeasons") Integer totalTemporadas,
                         @JsonAlias("imdbRating") String avaliacao,
                         @JsonAlias("Genre") String genero,
                         @JsonAlias("Actors") String atores,
                         @JsonAlias("Poster") String poster,
                         @JsonAlias("Plot") String sinopse) {
}
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosSerie(@JsonAlias("Title") String titulo,
                         @JsonAlias("totalSeasons") Integer totalTemporadas,
                         @JsonAlias("imdbRating") String avaliacao,
                         @JsonAlias("Actors") String atores,
                         @JsonAlias("Poster") String capa,
                         @JsonAlias("Genre") String genero,
                         @JsonAlias("Plot") String sinopse
                         )

{
}

o meu esta assim, exatamente como o exemplo

Não consegui identificar o problema, consegue compartilhar o projeto?