Saya ingin memiliki versi dari entri data yang sama. Dengan kata lain, saya ingin menggandakan entri tersebut dengan nomor versi lain.
id - Version
akan menjadi kunci utama.
Seperti apa bentuk entitas tersebut? Bagaimana saya bisa menggandakannya dengan versi lain?
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
sumber
sumber
@IdClass
anotasi, tip lain yang saya temukan adalah@Column
anotasi harus masuk ke bidang kelas Entitas (YourEntity
dalam kode contoh RohitJan).Jawaban:
Anda dapat membuat
Embedded class
, yang berisi dua kunci Anda, dan kemudian memiliki referensi ke kelas tersebut sepertiEmbeddedId
pada AndaEntity
.Anda akan membutuhkan anotasi
@EmbeddedId
dan@Embeddable
.Cara lain untuk mencapai tugas ini adalah dengan menggunakan
@IdClass
anotasi, dan menempatkan keduanyaid
di dalamnyaIdClass
. Sekarang Anda dapat menggunakan@Id
anotasi normal pada kedua atributsumber
@Generatedvalue
untuk Id oleh EmbeddedId@GeneratedValue
hanya dapat digunakan untuk menghasilkan nilai kunci untuk kunci utama, tidak dapat membuat kombinasi untuk kunci komposit.Kelas MyKey harus diimplementasikan
Serializable
jika Anda menggunakan@IdClass
sumber
Kelas kunci:
Kelas entitas:
Bagaimana saya bisa menggandakannya dengan Versi lain?
Anda dapat melepaskan entitas yang diambil dari penyedia, mengubah kunci Entri, lalu mempertahankannya sebagai entitas baru.
sumber
AUTOGENERATED
. atau sesuatu seperti itu@GeneratedValue(strategy = GenerationType.IDENTITY)
hash
danprime
metodehashCode
di kelasEntryKey
, dapatkah Anda memberi tahu saya dari mana ide itu berasal?Kelas MyKey (@Embeddable) tidak boleh memiliki hubungan seperti @ManyToOne
sumber