helas oui!
Code:
public boolean equals(Object rhs)
{
if (rhs == null)
return false;
if (! (rhs instanceof Team))
return false;
Team that = (Team) rhs;
if (this.getId() == null || that.getId() == null)
return false;
return (this.getId().equals(that.getId()));
}
Code:
public int hashCode()
{
if (this.hashValue == 0)
{
int result = 17;
int idValue = this.getId() == null ? 0 : this.getId().hashCode();
result = result * 37 + idValue;
this.hashValue = result;
}
return this.hashValue;
}
Mai lorsqu'un attribut composant ma clé primaire est changé, le hashcode est recalculé.
Code:
public void setId(java.lang.Integer id)
{
this.hashValue = 0;
this.id = id;
}
Donc je ne comprend pas pourquoi il ne faut pas que le equals et le hashcode s'appuie sur la clé primaire.
D'autant plus que seul ma clé primaire identifie mes objets.
Je n'ai pas d'autres attributs qui puissent le faire.
Admettons que je construise mon equals et mon hashcode avec des attributs qui ne font pas partie de ma clé primaire. Mon equals n'aura plus aucun sens, non ???
D'aprés ce que j'ai pu comprendre du forum en anglais: Le problème vient des objet "transient" qui n'ont pas encore leur identifiant ???
J'ai peut-être tout faux sur ma façon de faire, alors si quelqu'un pouvait m'éclairsir sur ce sujet, ou m'apporter des conseils...
(un exemple serait la bienvenue).
Merci
PS:la clé primaire que j'utilise est un numéro qui s'incrémente automatiquement.