Chcę mieć wersje z tego samego wpisu danych. Innymi słowy, chcę zduplikować wpis z innym numerem wersji.
id - Version
będzie kluczem podstawowym.
Jak powinna wyglądać jednostka? Jak mogę go skopiować z inną wersją?
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
źródło
źródło
@IdClass
adnotacji, kolejną wskazówką, którą znalazłem, jest to, że@Column
adnotacja powinna zostać umieszczona w polach klasy Entity (YourEntity
w przykładowym kodzie RohitJan).Odpowiedzi:
Możesz utworzyć
Embedded class
, który zawiera twoje dwa klucze, a następnie mieć odniesienie do tej klasy, tak jakEmbeddedId
w twoimEntity
.Byś potrzebne
@EmbeddedId
i@Embeddable
adnotacje.Innym sposobem osiągnięcia tego zadania jest użycie
@IdClass
adnotacji i umieść Zarównoid
w toIdClass
. Teraz możesz użyć normalnych@Id
adnotacji dla obu atrybutówźródło
@Generatedvalue
identyfikatorów przez EmbeddedId@GeneratedValue
może służyć tylko do generowania wartości kluczy dla klucza podstawowego, nie może generować kombinacji dla kluczy złożonych.Klasa MyKey musi zostać zaimplementowana,
Serializable
jeśli używasz@IdClass
źródło
Klasa klucza:
Klasa podmiotu:
Jak mogę go powielić z inną wersją?
Możesz odłączyć jednostkę, która została pobrana od dostawcy, zmienić klucz Entry, a następnie utrwalić ją jako nową jednostkę.
źródło
AUTOGENERATED
. oder coś takiego@GeneratedValue(strategy = GenerationType.IDENTITY)
hash
iprime
na metodyhashCode
w klasieEntryKey
, możesz mi powiedzieć, gdzie ta idea pochodzi?Klasa MyKey (@Embeddable) nie powinna mieć żadnych relacji, takich jak @ManyToOne
źródło