Prezados,
Tenho a seguinte estrutura em minha classe:
@OneToMany(cascade = CascadeType.ALL, mappedBy = “empresa”)
private List<Telefone> telefones;
Ao salvar a entidade pai, Empresa, os registros são duplicados. O equals e hashcode da classe Telefone estão assim:
[i]<a class="mention" href="/u/override">@Override</a>
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Telefone other = (Telefone) obj;
if(null!=other.getIdTelefone()){
if(other.getIdTelefone().equals(idTelefone)){
return true;
}
}else{
if(null!=ddd){
if(!(ddd.equals(other.getDdd()))){
return false;
}
}
if(null!=telefone){
if(!telefone.equals(other.getTelefone())){
return false;
}
}
if(null!=ramal){
if(!ramal.equals(other.getRamal())){
return false;
}
}
return true;
}
return false;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idTelefone != null ? idTelefone.hashCode() : 0);
return hash;
}
[/i]
Pois bem, além da duplicação, como se fosse pouco, mesmo após deslogar, a empresa é buscada no banco com a lista de telefones que tinha originalmente (Sem a duplicação). É óbvio que mesmo errado, após deslogar, o certo é carregar o que está no banco. A consulta é feita, é buscado no banco. Existe alguma maneira de tirar esse cache do JPA do Glassfish (EclipseLink)?
Obrigado,
Jorge