Galera,
Estou com um problema ao utilizar o método saveOrUpdate. Na atualização de um objeto no banco, ele cria outro registro. Segue método de persistência:
@Override
public void salvar(Resposta resposta) {
this.session.saveOrUpdate(resposta);
}
E o meu objeto que estou tentando persistir, possui a implementação de equals e hashcode. Como teste, alterei a implementação destes 2 métodos baseado em todos os atributos da classe:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((dataAlteracao == null) ? 0 : dataAlteracao.hashCode());
result = prime * result
+ ((dataCadastro == null) ? 0 : dataCadastro.hashCode());
result = prime * result
+ ((flgResposta == null) ? 0 : flgResposta.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result
+ ((idPergunta == null) ? 0 : idPergunta.hashCode());
result = prime * result
+ ((idQuestionario == null) ? 0 : idQuestionario.hashCode());
result = prime * result
+ ((obsResposta == null) ? 0 : obsResposta.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Resposta other = (Resposta) obj;
if (dataAlteracao == null) {
if (other.dataAlteracao != null)
return false;
} else if (!dataAlteracao.equals(other.dataAlteracao))
return false;
if (dataCadastro == null) {
if (other.dataCadastro != null)
return false;
} else if (!dataCadastro.equals(other.dataCadastro))
return false;
if (flgResposta == null) {
if (other.flgResposta != null)
return false;
} else if (!flgResposta.equals(other.flgResposta))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (idPergunta == null) {
if (other.idPergunta != null)
return false;
} else if (!idPergunta.equals(other.idPergunta))
return false;
if (idQuestionario == null) {
if (other.idQuestionario != null)
return false;
} else if (!idQuestionario.equals(other.idQuestionario))
return false;
if (obsResposta == null) {
if (other.obsResposta != null)
return false;
} else if (!obsResposta.equals(other.obsResposta))
return false;
return true;
}
Já tiveram este problema?