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();