Ich möchte Versionen von derselben Dateneingabe haben. Mit anderen Worten, ich möchte den Eintrag mit einer anderen Versionsnummer duplizieren.
id - Version
wird der Primärschlüssel sein.
Wie soll das Unternehmen aussehen? Wie kann ich es mit einer anderen Version duplizieren?
id Version ColumnA
1 0 Some data
1 1 Some Other data
2 0 Data 2. Entry
2 1 Data
java
jakarta-ee
jpa
composite-primary-key
Kayser
quelle
quelle
@IdClass
weiterer Tipp, den ich bei der Verwendung der Annotation gefunden habe, ist, dass die@Column
Annotation in die Felder der Entity-Klasse (YourEntity
im RohitJan-Beispielcode) aufgenommen werden sollte.Antworten:
Sie können ein erstellen
Embedded class
, das Ihre beiden Schlüssel enthält, und dann wieEmbeddedId
in Ihrem einen Verweis auf diese Klasse habenEntity
.Sie würden die
@EmbeddedId
und@Embeddable
Anmerkungen benötigen .Eine andere Möglichkeit, diese Aufgabe zu erfüllen, besteht darin,
@IdClass
Anmerkungen zu verwenden und beideid
darin zu platzierenIdClass
. Jetzt können Sie@Id
für beide Attribute normale Anmerkungen verwendenquelle
@Generatedvalue
für IDs von EmbeddedId@GeneratedValue
kann nur zum Generieren von Schlüsselwerten für einen Primärschlüssel verwendet werden, es kann keine Kombination für zusammengesetzte Schlüssel generiert werden.Die MyKey-Klasse muss implementiert werden,
Serializable
wenn Sie verwenden@IdClass
quelle
Schlüsselklasse:
Entitätsklasse:
Wie kann ich es mit einer anderen Version duplizieren?
Sie können die vom Anbieter abgerufene Entität trennen, den Eintragsschlüssel ändern und dann als neue Entität beibehalten.
quelle
AUTOGENERATED
. oder so ähnlich@GeneratedValue(strategy = GenerationType.IDENTITY)
hash
undprime
in VerfahrenhashCode
in der KlasseEntryKey
, können Sie mir sagen , wo die Idee herkommt?Die MyKey-Klasse (@Embeddable) sollte keine Beziehungen wie @ManyToOne haben
quelle