0

Die EclipseLink user guide besagt, dass beim Erstellen einer IdClass (nicht eingebettet) für einen zusammengesetzten Primärschlüssel, muss eine öffentliche keine Argumentkonstruktor und implementieren die Methoden equals und hashCode. Darüber hinaus implementiert das Beispiel, das es gibt, auch Getter und Setter.Was sind die Voraussetzungen für eine IdClass in EclipseLink?

Die Persistence WikiBook hat einen öffentlichen Konstruktor mit Argumenten, kein Konstruktor ohne Argumente, ohne Getter und Setter, und erklärt ausdrücklich, dass Eclipse erfordert keine Umsetzung von equals und hashCode.

Welche davon wird wirklich benötigt? Kann ich eine minimale IdClass nur mit den Attributen und ohne Konstruktoren und ohne Methoden verwenden, weil EclipseLink diese für mich generiert? Ist das abhängig von der Version von EclipseLink?

Antwort

1

Es wird nur ein NO-Arg-Konstruktor benötigt (der von Java generiert wird, sofern nicht ein anderer definiert ist). Sie können eine minimale Klasse nur mit Attributen verwenden.

Allerdings generiert EclipseLink in diesem Fall nichts (auch nicht mit Weben), was bedeutet, dass Sie unerwartete Probleme mit Hash- oder equalsbasierten Operationen bekommen können.

+0

Also bedeutet dies, dass, wenn man nicht 'hashCode' und' equals' spezifiziert, die Gleichheit der Primärschlüssel standardmäßig der Objektidentität entspricht? Und deshalb ist das, was diese Methoden beinhaltet, mit EclipseLink noch notwendig? – oulenz

+1

Grundsätzlich ja. Und ich schlage vor, immer 'hashCode/equals' Methoden zu verwenden, aber es funktioniert auch ohne sie in einfachen Anwendungsfällen (wie' select * from ... 'usw.) –

Verwandte Themen