Conforme proposto no desafio da aula 9 para fazer o crud do Autor, eu queria colocar uma mensagem de erro que impeça a pessoa de remover um autor com um livro cadastrado. Na classe AutorBean tentei criar um método do tipo:
private LivroBean livroBean = new LivroBean();
public void remover(Autor autor) {
if(livroBean.getAutores().contains(autor) == true) {
FacesContext.getCurrentInstance().addMessage("autor",
new FacesMessage("Nao pode remover autor que contem um livro!"));
}
else {
System.out.println("Removendo autor: "+autor);
System.out.println("autores: "+getAutores());
new DAO<Autor>(Autor.class).remove(autor);
}
e na classe Autor:
@Override
public String toString() {
return this.nome;
}
@Override
public boolean equals(Object ref) {
Autor outro = (Autor) ref;
if (this.nome != outro.nome ) {
System.out.println("this nome "+this.nome);
System.out.println("outro nome "+outro.nome);
return false;
}
return true;
}
Só que no método remove ele sempre cai no else, ai tenta remover um autor em uso e claro vai dar erro pois não pode remover o autor com uma tabela associada a ele. e no output no console:
this nome Jorge Amado
outro nome Machado de Assis
this nome Jorge Amado
outro nome Jorge Amado
this nome Jorge Amado
outro nome Paulo Coelho
Removendo autor: Jorge Amado
Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_
autores: [Machado de Assis, Jorge Amado, Paulo Coelho]
Hibernate: select autor0_.id as id0_0_, autor0_.nome as nome0_0_ from Autor autor0_ where autor0_.id=?
Hibernate: delete from Autor where id=?
Como faço para ele verificar a existência de um autor com um livro e impedir que a pessoa tente remove-lo?