Ist es notwendig, dass composite-id der Klasse zugeordnet werden soll?
kann es so sein?
%Vor%oder sollte
sein %Vor% Sollte das notwendig sein, dass, wenn wir einen zusammengesetzten Schlüssel haben, diese Klasse equals()
und override()
Methode implementieren soll?
Hibernate muss Kennungen vergleichen und serialisieren können. Daher muss die Bezeichnerklasse serialisierbar sein und hashCode () und equals () in Übereinstimmung mit dem Begriff der zusammengesetzten Schlüsselgleichheit der Datenbank überschreiben.
Wenn Sie eine zusammengesetzte ID als Eigenschaften der Entität zugeordnet haben, ist die Entität selbst die ID.
Ein zweiter Ansatz wird als gemappter zusammengesetzter Bezeichner bezeichnet, wobei die innerhalb der & lt; composite-id & gt; Element werden sowohl in der persistenten Klasse als auch in einer separaten Bezeichnerklasse
dupliziertSchließlich kann eine Composite-ID eine Komponentenklasse sein. In diesem Fall ist die Komponentenklasse die Bezeichnerklasse.
Beachten Sie, dass es dringend empfohlen wird, die ID als separate Klasse zu verwenden. Andernfalls haben Sie nur sehr ungünstige Möglichkeiten, Ihr Objekt mit session.get () oder session.load () zu suchen.
Relevante Abschnitte der Referenzdokumentation:
In diesem Beispiel wird eine Composite-ID als Eigenschaften der Entität zugeordnet. (Angenommen, Sie definieren die Klasse Employee).
%Vor%Eine zugeordnete Composite-ID:
%Vor%Eine Komponente als eine zusammengesetzte ID:
%Vor%Beides ist möglich. Wenn Sie
verwenden %Vor%Dann ist keine separate Klasse erforderlich, um den Schlüssel darzustellen. Die ID-Werte werden den Eigenschaften der Entität selbst entnommen.
Wenn Sie
verwenden %Vor%Dann wird die angegebene Klasse als Halter für die Schlüsseleigenschaften verwendet. Die Entitätsklasse muss jedoch auch diese Eigenschaften besitzen - die Werte werden sowohl in der Entitätsklasse als auch in der zusammengesetzten ID-Klasse gespeichert. Die Entitätsklasse kennt die Schlüsselklasse nicht. Nicht sehr nett, meiner Meinung nach.
Es gibt einen schöneren dritten Ansatz, der in den Dokumenten hier :
%Vor% Hier wird der zusammengesetzte Schlüssel durch die Klasse OrderLineId
repräsentiert, von der eine Instanz unter dem Feld id
in der Entitätsklasse gespeichert ist. Dies hält die Trennung zwischen Entity und Key sauberer.
Tags und Links java hibernate composite-key