Heim >Java >javaLernprogramm >Wie ordne ich zusammengesetzte Schlüssel mit JPA und Hibernate mithilfe von „@IdClass' oder „@EmbeddedId' zu?

Wie ordne ich zusammengesetzte Schlüssel mit JPA und Hibernate mithilfe von „@IdClass' oder „@EmbeddedId' zu?

DDD
DDDOriginal
2024-12-11 04:55:10204Durchsuche

How to Map Composite Keys with JPA and Hibernate Using `@IdClass` or `@EmbeddedId`?

Zusammengesetzte Schlüssel mit JPA und Hibernate zuordnen

Im bereitgestellten SQL-Schema verfügt die Time-Tabelle über einen zusammengesetzten Primärschlüssel bestehend aus levelStation und confPathID Felder. Für die Zuordnung dieses Schlüsseltyps in JPA und Hibernate sind spezielle Annotationen erforderlich, um den zusammengesetzten Primärschlüssel darzustellen.

Verwendung der IdClass-Annotation

Eine Möglichkeit besteht darin, eine Java-Klasse für zu definieren den zusammengesetzten Schlüssel mithilfe der @IdClass-Annotation. Die Klasse sollte Felder haben, die den Primärschlüsselspalten entsprechen, sowie Getter-, Setter-, Equals- und HashCode-Methoden:

public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;

    // Getters, setters, equals, hashCode
}

Die Entitätsklasse wird dann mit @IdClass und dem zusammengesetzten Schlüsselobjekt annotiert:

@Entity
@IdClass(TimePK.class)
class Time implements Serializable {
    @Id
    private Integer levelStation;
    @Id
    private Integer confPathID;

    // Other properties
}

Verwendung der EmbeddedId-Annotation

Alternativ Sie kann die Annotation @EmbeddedId verwenden, um eine Klasse zu definieren, die den zusammengesetzten Schlüssel enthält:

@Embeddable
public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;

    // Getters, setters, equals, hashCode
}

Die Entitätsklasse wird dann mit @EmbeddedId und dem eingebetteten zusammengesetzten Schlüsselobjekt annotiert:

@Entity
class Time implements Serializable {
    @EmbeddedId
    private TimePK timePK;

    // Other properties
}

Unterschiede zwischen IdClass und EmbeddedId

Sowohl @IdClass als auch @EmbeddedId ermöglicht die Zuordnung zusammengesetzter Primärschlüssel. Es gibt jedoch einige geringfügige Unterschiede:

  • @IdClass gibt an, dass eine eindeutige Kombination von Feldern den Primärschlüssel bildet, sie haben jedoch keine eindeutige Bedeutung.
  • @EmbeddedId schlägt dies vor Der zusammengesetzte Schlüssel ist eine eigenständige sinnvolle Einheit.

Die Wahl zwischen @IdClass und @EmbeddedId hängt von der jeweiligen Spezifität ab Semantik Ihrer Anwendung.

Das obige ist der detaillierte Inhalt vonWie ordne ich zusammengesetzte Schlüssel mit JPA und Hibernate mithilfe von „@IdClass' oder „@EmbeddedId' zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn