Singkatnya, @ElementCollection digunakan ketika keberadaan entitas anak tidak ada artinya tanpa entitas induk, TKI, setiap kali entitas induk dihapus, anak-anak Anda juga akan ...
dellasavia
1
Saya percaya itu BUKAN entitas anak, itu Jenis Nilai / Nilai Objek yang tertanam dan yang keberadaannya kurang berarti tanpa Entitas utama di mana ia terkandung.
CuriousMind
setuju dengan @CuriousMind, di JPA 'Entity' memiliki siklus hidupnya sendiri.
mhrsalehi
Jawaban:
124
Saya percaya @ElementCollectionini terutama untuk memetakan non-entitas (embeddable atau dasar) saat @OneToManydigunakan untuk memetakan entitas. Jadi yang mana yang akan digunakan tergantung pada apa yang ingin Anda capai.
Terima kasih Peder untuk jawabannya! Anda memiliki titik yang valid di sana karena @OneToMany hanya dapat menghubungkan entitas.
n_g
157
ElementCollectionadalah anotasi JPA standar, yang sekarang lebih disukai daripada anotasi Hibernate eksklusif CollectionOfElements.
Ini berarti bahwa koleksi bukanlah kumpulan entitas, tetapi kumpulan tipe sederhana (String, dll.) Atau kumpulan elemen yang dapat diembed (kelas dengan penjelasan @Embeddable).
Ini juga berarti bahwa elemen sepenuhnya dimiliki oleh entitas yang mengandung: mereka dimodifikasi ketika entitas diubah, dihapus ketika entitas dihapus, dll. Mereka tidak dapat memiliki siklus hidup mereka sendiri.
@ElementCollectionmemungkinkan Anda untuk menyederhanakan kode ketika Anda ingin menerapkan hubungan satu-ke-banyak dengan tipe sederhana atau tertanam. Misalnya di JPA 1.0 ketika Anda ingin memiliki hubungan satu-ke-banyak ke daftar String, Anda harus membuat entitas sederhana POJO ( StringWrapper) yang hanya berisi kunci utama dan Stringpertanyaan:
Jadi apa sebenarnya tujuan dari @ElementCollection?
n_g
0
ElementCollection dapat mengesampingkan pemetaan, atau tabel untuk koleksi mereka, sehingga Anda dapat memiliki beberapa entitas referensi kelas Embeddable yang sama, tetapi masing-masing menyimpan objek bergantung mereka di tabel terpisah.
Jawaban:
Saya percaya
@ElementCollection
ini terutama untuk memetakan non-entitas (embeddable atau dasar) saat@OneToMany
digunakan untuk memetakan entitas. Jadi yang mana yang akan digunakan tergantung pada apa yang ingin Anda capai.sumber
ElementCollection
adalah anotasi JPA standar, yang sekarang lebih disukai daripada anotasi Hibernate eksklusifCollectionOfElements
.Ini berarti bahwa koleksi bukanlah kumpulan entitas, tetapi kumpulan tipe sederhana (String, dll.) Atau kumpulan elemen yang dapat diembed (kelas dengan penjelasan
@Embeddable
).Ini juga berarti bahwa elemen sepenuhnya dimiliki oleh entitas yang mengandung: mereka dimodifikasi ketika entitas diubah, dihapus ketika entitas dihapus, dll. Mereka tidak dapat memiliki siklus hidup mereka sendiri.
sumber
@ElementCollection
memungkinkan Anda untuk menyederhanakan kode ketika Anda ingin menerapkan hubungan satu-ke-banyak dengan tipe sederhana atau tertanam. Misalnya di JPA 1.0 ketika Anda ingin memiliki hubungan satu-ke-banyak ke daftarString
, Anda harus membuat entitas sederhana POJO (StringWrapper
) yang hanya berisi kunci utama danString
pertanyaan:Dengan JPA 2.0 Anda cukup menulis:
Lebih sederhana, bukan? Perhatikan bahwa Anda masih dapat mengontrol nama tabel dan kolom menggunakan
@CollectionTable
anotasi.Lihat juga:
sumber
Dasar atau Tertanam : Entitas @ElementCollection
atau @ManyToMany
@ElementCollection:
@OneToMany / @ManyToMany:
sumber
@ElementCollection
menandai koleksi. Ini tidak berarti bahwa koleksi ini merujuk pada bergabungnya 1-n.sumber
ElementCollection dapat mengesampingkan pemetaan, atau tabel untuk koleksi mereka, sehingga Anda dapat memiliki beberapa entitas referensi kelas Embeddable yang sama, tetapi masing-masing menyimpan objek bergantung mereka di tabel terpisah.
sumber