Se você está manipulando elementos numa coleção persistente (PersistentSet) do hibernate, por via das dúvidas, sobrescreva os métodos equals() e hashCode(). Por quê? Veja isso:
A implementação automática dos métodos equals() e hashCode() do Eclipse é falha, não realiza encapsulamento, e no caso do Timestamp e do Date, realiza justamente a comparação falha que é descrita no artigo acima. Então, o melhor a fazer seria usar o compareTo() dentro do equals(), e no caso do hashCode(), fazer algo parecido com isso:
note que esta implementação é totalmente diferente da implementação de hashCode() do java, que é algo parecido com:
A implementação automática dos métodos equals() e hashCode() do Eclipse é falha, não realiza encapsulamento, e no caso do Timestamp e do Date, realiza justamente a comparação falha que é descrita no artigo acima. Então, o melhor a fazer seria usar o compareTo() dentro do equals(), e no caso do hashCode(), fazer algo parecido com isso:
public int hashCode() {
final int prime = 31;
int result = 1;
if (getDataHoraFim() != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(getDataHoraFim());
result = prime * result
+ calendar.get(Calendar.YEAR);
result = prime * result
+ calendar.get(Calendar.MONTH);
result = prime * result
+ calendar.get(Calendar.DATE);
result = prime * result
+ calendar.get(Calendar.HOUR_OF_DAY);
result = prime * result
+ calendar.get(Calendar.MINUTE);
}
...
}
note que esta implementação é totalmente diferente da implementação de hashCode() do java, que é algo parecido com:
((int) getDataFim().getTime()) ^
((int) (getDataFim().getTime() >>> 32))
No comments:
Post a Comment
Regras são chatas, mas...
Todos os comentários são lidos e moderados previamente.
São publicados aqueles que respeitam as regras abaixo:
- Seu comentário precisa ter relação com o assunto do post;
- Em hipótese alguma faça propaganda de outros blogs ou sites;
- Não inclua links desnecessários no conteúdo do seu comentário;
- Se quiser deixar sua URL, comente usando a opção OpenID;
- CAIXA ALTA, miguxês ou erros de ortografia não serão tolerados;
- Ofensas pessoais, ameaças e xingamentos não são permitidos;