Hi
Wie sieht denn das überladen von hashCode() und equals() in Entity Klassen aus?
Mein erster Gedanke wäre, nur die ID zu nehmen, hier sehe ich jedoch das Problem, dass dann zwei eigentlich gleiche Objekte in der Tabelle landen können. Vermutlich wird ja mit equals geprüft ob das Entity schon in der Tabelle ist.
Gegen alle Attribute spricht wohl dass unterschiedliche Objekte, unterschiedliche IDs haben sollten, was meiner meinung nach es Redundant macht sowohl ID als auch die restlichen Attribute in equals und hashcode zu verwenden.
Mein Gedanke ist nun, dass es der beste Weg ist, alle Attribute, bis auf die ID zu nehmen.
Wie macht ihr es, bzw. wie ist es richtig?
Edit:
Gerade gesehen, dass ich im falschen Forum gelandet bin. Sorry dafür...
Kann ein Mod das bitte nach Frameworks vershcieben?
Wie sieht denn das überladen von hashCode() und equals() in Entity Klassen aus?
Mein erster Gedanke wäre, nur die ID zu nehmen, hier sehe ich jedoch das Problem, dass dann zwei eigentlich gleiche Objekte in der Tabelle landen können. Vermutlich wird ja mit equals geprüft ob das Entity schon in der Tabelle ist.
Java:
import javax.persistence.*;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String name;
/*
getter and setter
*/
@Override
public boolean equals(Object o) {
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return id != null ? id.equals(person.id) : person.id == null;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
}
class Test {
public static void main(String[] args) {
Person person = new Person("Hans");
Person person1 = new Person("Hans"); //equals ergibt false, sollten also beide in die DB geschrieben werden
}
}
Gegen alle Attribute spricht wohl dass unterschiedliche Objekte, unterschiedliche IDs haben sollten, was meiner meinung nach es Redundant macht sowohl ID als auch die restlichen Attribute in equals und hashcode zu verwenden.
Mein Gedanke ist nun, dass es der beste Weg ist, alle Attribute, bis auf die ID zu nehmen.
Wie macht ihr es, bzw. wie ist es richtig?
Edit:
Gerade gesehen, dass ich im falschen Forum gelandet bin. Sorry dafür...
Kann ein Mod das bitte nach Frameworks vershcieben?
Zuletzt bearbeitet: