2011-11-14 11 views
6

मैंने अपने mySQL के लिए ग्रहण, जेनरेट कक्षाओं में jOOQ स्थापित किया है, लेकिन मुझे अभी भी कुछ बुनियादी प्रश्न लिखने में समस्याएं हैं।jOOQ वापस जेनरेट की गई कुंजी के साथ क्वेरी डालें

मैं उत्पन्न चाबियों का लौटने के साथ डालने क्वेरी की रचना करने की कोशिश की, लेकिन संकलक त्रुटि फेंकता

तालिका: tblCategory कॉलम: category_id, PARENT_ID, नाम, रेम, uipos

Result<TblcategoryRecord> result= create.insertInto(Tblcategory.TBLCATEGORY, 
    Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS) 
     .values(node.getParentid()) 
     .values(node.getName()) 
     .values(node.getRem()) 
     .values(node.getUipos()) 
     .returning(Tblcategory.CATEGORY_ID) 
     .fetch(); 

भी करने की कोशिश की अन्य differnt तरीके इसे सही तरीके से कैसे करें?

धन्यवाद charis

उत्तर

11

वाक्य रचना का उपयोग कर रहे कई रिकॉर्ड डालने के लिए है। यह 4 रिकॉर्ड डालने जा रहा है, प्रत्येक एक फ़ील्ड के साथ।

Result<TblcategoryRecord> result = create 
    .insertInto(Tblcategory.TBLCATEGORY, 
    Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS) 
    .values(node.getParentid(), node.getName(), node.getRem(), node.getUipos()) 
    .returning(Tblcategory.CATEGORY_ID) 
    .fetch(); 

या वैकल्पिक रूप से:

Result<TblcategoryRecord> result = create 
    .insertInto(Tblcategory.TBLCATEGORY) 
    .set(Tblcategory.PARENT_ID, node.getParentid()) 
    .set(Tblcategory.NAME, node.getName()) 
    .set(Tblcategory.REM, node.getRem()) 
    .set(Tblcategory.UIPOS, node.getUipos()) 
    .returning(Tblcategory.CATEGORY_ID) 
    .fetch(); 

create.insertInto(Tblcategory.TBLCATEGORY, 
    Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS) 

यह क्या आप शायद क्या करना चाहते है:

.values(node.getParentid()) 
.values(node.getName()) 
.values(node.getRem()) 
.values(node.getUipos()) 

लेकिन आप 4 क्षेत्रों की घोषणा की, ताकि काम करने के लिए नहीं जा रहा है

शायद, आप भी

http://www.jooq.org/doc/2.6/manual/sql-building/sql-statements/insert-statement/

या INSERT बयान है कि मान बनाने के लिए जावाडोक:

http://www.jooq.org/javadoc/latest/org/jooq/InsertReturningStep.html

+0

धन्यवाद प्रयास करें पसंदीदा समाधान जोड़ा है, लेकिन अभी भी ग्रहण – Charis997

+0

@ Charis997 कास्टिंग की जरूरत है: यह आमतौर पर स्टैक ओवरफ़्लो पर सवाल में जवाब डाल करने के लिए अनुशंसित नहीं है। बाद के आगंतुकों के लिए यह समझना मुश्किल होगा कि क्या हो रहा है। इसके बजाय, आप इस उत्तर को "स्वीकार" कर सकते हैं, या खुद को उत्तर दे सकते हैं, अगर यह पर्याप्त नहीं है –

+0

@ Charis997: कास्टिंग के बारे में: आप सही हैं। JOOQ 2.0 के साथ अब यह आवश्यक नहीं होगा। लेकिन यह अभी भी jOOQ 1.6.9 –

3

preffered समाधान

TblcategoryRecord result = 
    // [...] 
    .fetchOne(); 

का उपयोग कर अधिक जानकारी के लिए से बेहतर, मैनुअल पर विचार

try { 
    TblcategoryRecord record = (TblcategoryRecord) create 
     .insertInto(Tblcategory.TBLCATEGORY) 
     .set(Tblcategory.PARENT_ID, node.getParentid()) 
     .set(Tblcategory.NAME, node.getName()) 
     .set(Tblcategory.REM, node.getRem()) 
     .set(Tblcategory.UIPOS, node.getUipos()) 
     .returning(Tblcategory.CATEGORY_ID) 
     .fetchOne(); 

     node.setId(record.getCategoryId()); 

    } catch (SQLException e1) { } 
+4

के लिए तत्पर हैं, आपको वास्तव में उस SQLException को अनदेखा नहीं करना चाहिए! यदि यह सिर्फ एक उदाहरण है, तो आप इसे पूरा प्रयास/पकड़ ब्लॉक छोड़ सकते हैं। –

0

,

YoutableRecord result = create 
.insertInto(YOURTABLE) 
.set(YOURTABLE.PROD_NAME, "VAL") 
.returning(YOURTABLE.ID_PR) 
.fetchOne(); 


int id = result.getValue(Products.PRODUCTS.ID_PR); 
संबंधित मुद्दे