इसे मैन्युअल रूप से कैसे करें
आप DSL.row()
एक पंक्ति मान व्यंजक बनाने के लिए, और फिर:
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")
);
यह भी देखें jOOQ IN
. के बारे में मैन्युअल अनुभाग विधेय, डिग्री> 1
एम्बेड करने योग्य कुंजियों का उपयोग करें
वैकल्पिक रूप से, आप नए jOOQ 3.14 <embeddablePrimaryKeys/>
सुविधा, जो आपको सभी प्राथमिक कुंजियों और उनकी संदर्भित विदेशी कुंजियों के लिए रिकॉर्ड प्रकार उत्पन्न करने की अनुमति देती है। तब आपकी क्वेरी पढ़ी जाएगी:
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();
यह आपकी मूल क्वेरी के समान ही क्वेरी उत्पन्न करता है, लेकिन यह सुरक्षित रूप से टाइप करता है, और आप एक कुंजी कॉलम को फिर कभी नहीं भूलेंगे। न केवल जब आप प्राथमिक कुंजी को क्वेरी करते हैं, बल्कि जब आप इसमें शामिल होते हैं! कुंजी बदलने से संकलन त्रुटि होगी:
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();
या एक अंतर्निहित शामिल हों इस तरह दिखेगा:
ctx.select(OTHER_TEST_TBL.testTbl().fields(), OTHER_TEST_TBL.fields())
.from(OTHER_TEST_TBL)
.fetch();