Boa tarde, estou praticando programação automatizando uma biblioteca, mas estou tendo problemas quando tento listar Livros pelo Autor.
sempre que tento é indicado o erro “java.lang.NullPointerException”
vou colocar o código
Classe Livro
@Entity
public class Livro {
@Id
@GeneratedValue
private long idLivro;
@Column(length = 100, nullable = true)
private String titulo;
@ManyToOne
private Autor autor;
@Temporal(TemporalType.DATE)
private Date anoDePublicacao;
@ManyToOne
private Editora editora;
@Column(length = 3, nullable = false)
private String numeroDeEdicao;
@Column(length = 3, nullable = true)
private double Copias;
public long getIdLivro() {
return idLivro;
}
public void setIdLivro(long idLivro) {
this.idLivro = idLivro;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public Autor getAutor() {
return autor;
}
public void setAutor(Autor autor) {
this.autor = autor;
}
public Date getAnoDePublicacao() {
return anoDePublicacao;
}
public void setAnoDePublicacao(Date anoDePublicacao) {
this.anoDePublicacao = anoDePublicacao;
}
public Editora getEditora() {
return editora;
}
public void setEditora(Editora editora) {
this.editora = editora;
}
public String getNumeroDeEdicao() {
return numeroDeEdicao;
}
public void setNumeroDeEdicao(String numeroDeEdicao) {
this.numeroDeEdicao = numeroDeEdicao;
}
public double getCopias() {
return Copias;
}
public void setCopias(double Copias) {
this.Copias = Copias;
}
@Override
public String toString() {
return "Livro{ " + "idLivro= " + idLivro + ", titulo= " + titulo + ", autor= " + autor.getNomeAutor() + ", anoDePublicacao= " + anoDePublicacao + ", editora= " + editora.getNomeEditora() + ", numeroDeEdicao= " + numeroDeEdicao + ", numero De Copias Disponiveis para Aluguel= " + Copias + '}';
}
}
Classe Autor
@Entity
public class Autor {
@Id
@GeneratedValue
private long idAutor;
@Column(length = 20, nullable = true)
private String nomeAutor;
@Temporal(TemporalType.DATE)
private Date dtNascimento;
@Temporal(TemporalType.DATE)
private Date dtMorte;
@Column(length = 30, nullable = true)
private String nacionalidade;
@Column(length = 30, nullable = true)
private String generoLiterario;
public long getIdAutor() {
return idAutor;
}
public void setIdAutor(long idAutor) {
this.idAutor = idAutor;
}
public String getNomeAutor() {
return nomeAutor;
}
public void setNomeAutor(String nomeAutor) {
this.nomeAutor = nomeAutor;
}
public Date getDtNascimento() {
return dtNascimento;
}
public void setDtNascimento(Date dtNascimento) {
this.dtNascimento = dtNascimento;
}
public Date getDtMorte() {
return dtMorte;
}
public void setDtMorte(Date dtMorte) {
this.dtMorte = dtMorte;
}
public String getNacionalidade() {
return nacionalidade;
}
public void setNacionalidade(String nacionalidade) {
this.nacionalidade = nacionalidade;
}
public String getGeneroLiterari() {
return generoLiterario;
}
public void setGeneroLiterari(String generoLiterari) {
this.generoLiterario = generoLiterari;
}
@Override
public String toString() {
return "Autor{" + "idAutor=" + idAutor + ", nomeAutor=" + nomeAutor + ", dtNascimento=" + dtNascimento + ", dtMorte=" + dtMorte + ", nacionalidade=" + nacionalidade + ", generoLiterari=" + generoLiterario + '}';
}
}
Função para listar os livro por Autor
@Test
public void testListarPorAutor() throws Exception {
String resposta;
System.out.println(“Informe o nome do autor”);
resposta = “Teste do if”;
for (Livro perc : fldao.facadeListaLivro()) {
if (perc.getAutor().getNomeAutor().equals(resposta)) {
System.out.println(perc);
}
}
O código parece correto para mim. Quem puder ajudar agradeço