PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara memilih beberapa baris dengan kunci utama komposit mereka di JOOQ?

Cara melakukannya secara manual

Anda dapat menerjemahkan kueri SQL Anda langsung ke jOOQ menggunakan DSL.row() untuk membangun ekspresi nilai baris, dan kemudian:

row(TEST_TBL.ID_PART_1, TEST_TBL.ID_PART_2).in(
  row("id_part_1_1", "id_part_2_1"),
  row("id_part_1_2", "id_part_2_2")
);

Lihat juga jOOQ bagian manual tentang IN predikat, gelar> 1

Gunakan kunci yang dapat disematkan

Atau, Anda dapat memperoleh keuntungan dari keamanan tipe tambahan yang ditawarkan oleh jOOQ 3.14 baru <embeddablePrimaryKeys/> fitur, yang memungkinkan Anda membuat jenis rekaman untuk semua kunci utama dan kunci asing referensinya. Kueri Anda kemudian akan berbunyi:

ctx.select()
   .from(TEST_TBL)
   .where(TEST_TBL.TEST_TBL_PKEY.in(
      new TestTblPkeyRecord("id_part_1_1", "id_part_2_1"),
      new TestTblPkeyRecord("id_part_1_2", "id_part_2_2")
   ))
   .fetch();

Ini menghasilkan kueri yang sama seperti kueri asli Anda, tetapi mengetik dengan aman, dan Anda tidak akan pernah melupakan kolom kunci lagi. Tidak hanya saat Anda menanyakan kunci utama, tetapi juga saat Anda bergabung! Mengubah kunci akan menghasilkan kesalahan kompilasi:

ctx.select()
   .from(TEST_TBL)
   .join(OTHER_TEST_TBL)
   .on(TEST_TBL.TEST_TBL_PKEY.eq(OTHER_TEST_TBL.TEST_TBL_PKEY.TEST_TBL_FKEY))
   .fetch();

Atau gabung implisit akan terlihat seperti ini:

ctx.select(OTHER_TEST_TBL.testTbl().fields(), OTHER_TEST_TBL.fields())
   .from(OTHER_TEST_TBL)
   .fetch();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis postgres {jenis bidang} hanya shell

  2. Pencarian teks lengkap Postgresql untuk bahasa Ceko (tidak ada konfigurasi bahasa default)

  3. Kueri bersarang dalam squeel

  4. Memesan hasil kueri dengan string numerik di Django (backend postgres)

  5. PostgreSQL Tidak Ada fungsi Peningkatan Otomatis?