2012-12-28 13 views
11

मैं jOOQ में निम्न क्वेरी:जॉइनक में केवल एक तालिका से चयन करने के लिए एक प्रश्न का उपयोग करके कैसे चयन करें?

factory() 
.select() 
.from(PERSON) 
.join(ENDUSER).on(ENDUSER.PERSON_FK.equal(PERSON.ID)) 
.where(ENDUSER.ID.equal(userId)) 
.fetchOne(); 

इस क्वेरी PERSON और enduser से सभी स्तंभों के साथ एक रिकार्ड मेरे लिए देता है, लेकिन मैं केवल एक ही व्यक्ति से कॉलम चाहते हैं (यही कारण है कि मैं डाल है .from(PERSON) और नहीं .from(PERSON, ENDUSER)) । मुझे पता है कि इससे कोई फर्क नहीं पड़ता है लेकिन मैं नहीं चाहता कि अनावश्यक क्षेत्रों को वापस किया जाए।

+0

मैं थोड़ा दुविधा में पड़ा हुआ हूँ कि क्या यह http का डुप्लिकेट है : //stackoverflow.com/q/5832803/521799, वास्तव में –

उत्तर

14

आप Table.fields() विधि के माध्यम से PERSON में खेतों तक पहुँच सकते हैं:

factory() 
.select(PERSON.fields()) // Or getFields() in jOOQ 2.x 
.from(PERSON) 
.join(ENDUSER)... 

यह लिख

SELECT PERSON.* 
FROM PERSON 
JOIN ENDUSER ... 

एक अन्य विकल्प वास्तव में व्यक्ति एक से सभी क्षेत्रों को सूचीबद्ध करने के द्वारा होता है के लगभग समान है एक

+0

धन्यवाद लुकास, यही वही है जो मैं ढूंढ रहा था! – islon

7

लुकास का जवाब वही था जो मैं ढूंढ रहा था। तुम भी केवल तालिका आप (सामान्य Record प्रकार के बजाय) के बारे में परवाह के लिए वापस एक जोरदार टाइप किया प्रतिक्रिया ऑब्जेक्ट पाने के लिए into() विधि का उपयोग कर सकते हैं:

PersonRecord record = factory() 
    .select() 
    .from(PERSON) 
    .join(ENDUSER).on(ENDUSER.PERSON_FK.equal(PERSON.ID)) 
    .where(ENDUSER.ID.equal(userId)) 
    .fetchOne() 
    .into(PERSON); 
संबंधित मुद्दे