Cache em JPA (Glassfish 3) e duplicação de registros no Postgress

0 respostas
jorgeorieogal

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

Criado 4 de novembro de 2010
Respostas 0
Participantes 1