public class ErroAlertaCampoEncontradoEntity implements Serializable {
@ManyToOne
@JoinColumn(name = "eea_id")
public ErroAlertaEncontradoEntity getErrosAlertasEncontrados() {
return erroAlertaEncontrado;
}
public void setErrosAlertasEncontrados(ErroAlertaEncontradoEntity erroAlertaEncontrado) {
this.erroAlertaEncontrado = erroAlertaEncontrado;
}
E este
`public class ErroAlertaEncontradoEntity implements Serializable {`
@OneToMany(mappedBy = "erroAlertaEncontrado", fetch = FetchType.LAZY)
public List<ErroAlertaEncontradoEntity> getErrosAlertasEncontrados() {
return errosAlertasEncontrados;
}
public void setErrosAlertasEncontrados(List<ErroAlertaEncontradoEntity> errosAlertasEncontrados) {
this.errosAlertasEncontrados = errosAlertasEncontrados;
}
Problema que no segundo está com erro de compilação, dizendo: In attribute ‘errosAlertasCamposEncontrados’, the “mapped by” value ‘erroAlertaEncontrado’ cannot be resolved to an attribute on the target entity.
Olha só, vamos falar de conceitos de java, padrões de nomes e etc.
Primeiro, você sabe que o uso de getter e setter é uma das maneiras que o java fornece para encapsulamento de dados, um conceito de orientação a objetos que é muito importante (existem outros além desse, ok?).
É um costume (até mesmo muito errado) dos desenvolvedores saírem criando getters e setters para quase tudo, justificando que é para acessar os atributos privados (mesmo que getters e/ou setters nem sejam precisos).
Bom, o que acontece, com isso, é que nos acostumamos a ver coisas como
private int codigo;
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public int getCodigo() {
return this.codigo;
}
Que está correto.
O que muitos esquecem é que podemos ter coisas como
private int codigo;
public void setIdentificador(int identificador) {
this.codigo = identificador;
}
public int getIdentificador() {
return this.codigo;
}
Assim sendo, quem vai ler ou definir o valor que representa a identificação ou o código de algo, vai interpretar que o atributo se chama “identificador”, pois o getter e o setter respectivos tem o prefixo (get ou set) e é seguido pela palavra Identificador (com i maiúsculo sim).
Se você utiliza JSF, sabe que precisa ter um getter e um setter para cada objeto do managed bean que será mapeado no xhtml, para definir ou ter seu valor definido a partir de um componente.
No teu caso, o hibernate está seguindo a mesma lógica. Ele pega o método que você mapeou, remove o prefixo (get) e interpreta que ele representa um atributo de nome errosAlertasEncontrados.
Ocorre que, no outro lado da associação, você diz que o atributo que mapeia a relação tem o nome erroAlertaEncontrado