@Entity
public class Project implements Serializable {
@EmbeddedId ProjectId id;
}
@Embeddable
class ProjectId implements Serializable {
int departmentId;
long projectId;
}
Vergessen Sie nicht, Serializable zu implementieren 😉
– Diego Souza
8. Januar 2020 um 23:56 Uhr
Wenn alle Felder in der Klasse Teil des Primärschlüssels sind, wäre die Lösung ziemlich einfach (erweiternde Lösung von @raul-cuth):
@Entity
@IdClass(EntityExample.class)
public class EntityExample implements Serializable {
@Id
private int column1;
@Id
private int column2;
@Id
private int column3;
}
Was ist, wenn eines der Felder ein FK ist? Dies wäre ein typisches Szenario beim Mapping eines Many-to-Many Beziehung Tisch.
– Paulo Merson
13. Dezember 2022 um 18:28 Uhr
Pinguin
Verwenden @IdClass Anmerkung auf der @Entity Klasse gefolgt von @Id Anmerkung zu einzelnen Feldern, die Teil des zusammengesetzten Primärschlüssels sind.
Alternativ nutzen können @Embeddable Klasse, die aus einzelnen Feldern des zusammengesetzten Primärschlüssels bestehen kann und dann eine Referenz dieser Klasse als Attribut mit verwendet werden kann @Embedded Anmerkung hinein @Entity Klasse. Hoffe das hilft.
Beachten Sie, dass der Hibernate-Entity-Class-to-SQL-DDL-Script-Generator alle Felder sortiert und unabhängig von der Reihenfolge, in der sie in den Definitionen erscheinen, die Tabellendefinition und die Index- / Constraint-Definitionen in dieser Sortierung erstellt Reihenfolge der Felder.
Während die Reihenfolge der Felder in der Tabellendefinition möglicherweise keine große Rolle spielt, spielt die Reihenfolge der Felder in einem zusammengesetzten Index definitiv eine Rolle. Daher müssen Ihre Schlüsselfelder so benannt werden, dass sie, wenn sie nach ihren Namen sortiert werden, in der Reihenfolge sind, die Sie für den Index wünschen).
14446000cookie-checkSQL JPA – Mehrere Spalten als Primärschlüsselyes