In dem Grails Buch „Programmieren Grails“ Burt sagt etwa gleich & hashCode (und ich hoffe, ich bin es hier immer), dass sie in Szenarien von Proxy-Nutzung umgesetzt werden sollen (wie wenn faul-Laden oder Customer.load()
tun) und in einer Sammlung gespeichert werden. Denn wenn eine Proxy-Entität sowie eine nicht-proxietierte Entität in einer Sammlung gespeichert sind, werden sie nicht als das "gleiche" Objekt behandelt.
Da Hibernate normalerweise nicht proxiedierte Versionen einer Domäneninstanz verwendet, wenn sie bereits im Cache der ersten Ebene (der Hibernate-Sitzung) enthalten ist, tritt dieses Problem nur auf, wenn Sie ein Domänenobjekt haben, das sich nicht im aktuellen Ruhezustand befindet Sitzung (wie die http-Sitzung).
Wenn Sie so viel Standardcode vermeiden möchten, können Sie die Annotation verwenden @EqualsAndHashCode
(siehe docs) wie folgt aus:
@EqualsAndHashCode(includes='firstName,lastName')
class Customer {
String customerId
String firstName
String lastName
}
Weitere Informationen finden Sie unter „Programmieren Grails - Burt Beckwith“ First Edition, Seite 134.
Danke für die Hilfe Mario! Ich habe vielleicht mehr Fragen zu diesem Thema, aber Sie haben mich in die richtige Richtung geleitet. –