Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mengisi nilai kunci asing dalam konfigurasi Hibernate + Spring JPA ketika objek induk/anak dipertahankan pada saat yang sama?

Kode itu memiliki dua hal yang mencegahnya bekerja:

  1. Entitas Anda tidak memiliki @Id . Anda mungkin mengabaikannya karena ini adalah sebuah contoh, tetapi perlu ditunjukkan.
  2. Anda telah memetakan dua kali kolom parent_id . Anak memiliki bidang Panjang dan bidang Induk yang dipetakan ke kolom yang sama. Singkirkan yang Panjang. Ini adalah hubungan Orang Tua yang Anda cari.

Setelah itu, apa yang Anda miliki di sana adalah satu-ke-banyak dua arah yang sepenuhnya tradisional dengan kolom gabungan. Jika tidak berhasil untuk Anda, berarti Anda melakukan kesalahan dalam kode tempat Anda membuat dan menyimpannya. Sangat mungkin, Anda tidak membuat objek dengan benar. Kode yang benar menggunakan entitas ini akan terlihat seperti ini:

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Parent p = new Parent();
Child child = new Child();
child.parent = p;
Child child1 = new Child();
child1.parent = p;
p.children = Arrays.asList(child, child1);
session.save(p);
session.save(p.children.get(0));
session.save(p.children.get(1));
tx.commit();

Perhatikan terutama bahwa anak harus diatur dalam orang tua serta orang tua pada anak. Jangan membuat model objek setengah rusak dan mengharapkan Hibernate untuk membersihkan kekacauan Anda. Banyak orang mengabaikan persyaratan yang tampak jelas ini dan bertanya-tanya mengapa Hibernate tampak tidak stabil dan/atau tidak dapat diandalkan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencadangan Administrator MySQL:Mode Kompatibilitas, Apa sebenarnya yang dilakukan ini?

  2. Cara membuat tabel berdasarkan Kumpulan Hasil JDBC

  3. Model data yang efisien untuk kueri rentang

  4. Pesan berdasarkan FIELD di MYSQL

  5. Contoh UTC_TIME – MySQL