2009-10-23 8 views
24

क्या कोई उपकरण उपलब्ध है जो किसी को "सीधे" डेटाबेस के खिलाफ जेपीक्यूएल क्वेरी निष्पादित करने की अनुमति देता है? मैं सीधे जेपीक्यूएल प्रश्नों को एक विंडो में टाइप करना चाहता हूं और उन्हें निष्पादित करना चाहता हूं।जेपीक्यूएल क्वेरीज़ निष्पादित करने के लिए टूल?

बेशक यह मुझे शायद कुछ विन्यास करने की आवश्यकता होगी ताकि यह मेरी जेपीए इकाइयों आदि से अवगत हो, लेकिन मुझे लगता है कि यह किया जा सकता है ... किसी को भी इस तरह के उपकरण के बारे में पता है?

धन्यवाद।

उत्तर

0

क्या आपने जांच की है कि नेटबीन, ग्रहण या इंटेलिजे क्या चाहते हैं?

विशेष रूप से ग्रहण के लिए हाइबरनेट प्लगइन के साथ, यह संभव होना चाहिए (यदि आप अपने जेपीए बैकएंड के रूप में हाइबरनेट का उपयोग करते हैं)।

+0

लग रहा है । – Rintoul

17

ग्रहण दली a generic JPQL editor तक आप Hibernate Tools का उपयोग कर सकते हैं। हाइबरनेट उपकरण दली के साथ काम करता है और एक एचक्यूएल/जेपीक्यूएल क्वेरी संपादक प्रदान करता है जो प्रश्नों को निष्पादित करने के लिए हाइबरनेट का उपयोग करता है।

एक विकल्प इंटरफेक्टिव जेपीए क्वेरी संपादक और धावक JPA Query Tool [जेक्यूटी] का उपयोग करना होगा। यह आप जो खोज रहे हैं उसके करीब हो सकता है (एक स्टैंडअलोन एप्लिकेशन के रूप में चलता है)।

alt text

अद्यतन: मैं हटाया उपकरण NetBeans के लिए सुझाव दिया, परियोजना निष्क्रिय है और कुछ भी प्रदान नहीं करता है।

+0

Google Code पर होस्ट की गई चीज़ में अभी तक कुछ भी डाउनलोड करने योग्य प्रतीत नहीं होता है। – Rintoul

+0

हाइबरनेट उपकरण की तरह दिखता नहीं है जेपीक्यूएल का समर्थन करता है ... शायद केवल एचक्यूएल? – Rintoul

+0

नेटबीन्स-जेपीए-एडिटर के लिए, आपको वास्तव में जांच करना होगा और परियोजना को स्वयं बनाना होगा। हाइबरनेट टूल्स के लिए, एचक्यूएल जेपीक्यूएल से अधिक है, इसलिए यह प्रयोग योग्य होना चाहिए। –

0

तुम भी Hibernate Tool सुइट, जो NetBeans

+0

क्या आपने इसे वर्तमान कोड के साथ उपयोग किया है और इसे उपयोगी पाया है? इसके लिए आखिरी रिलीज 2006 में था, और तब से ऐसा कुछ नहीं हुआ है। – trafalmadorian

3

मुझे लगता है कि मैं सभी उपकरण और आईडीई के करने की कोशिश की पर आधारित है।

अंत में, मैं कोड की निम्न बिट के साथ बसे ...

queryEditor एक unittest के रूप में चलाता है।

मान लें कि आपके पास पहले से ही यूनिटटेस्ट हैं, आप PersistenceContexts, डेटा स्रोत, ड्राइवर्स, पुस्तकालय इत्यादि को कॉन्फ़िगर करने की परेशानी से बचते हैं ... यह आपको पैरामीटर के रूप में इकाई उदाहरणों को पारित करने के लिए भी अनुमति देता है।

और जब आप पूरा कर लें, क्वेरी-स्ट्रिंग को @ नामांकित पैरामीटर परिभाषा पर कॉपी करें और @Test को सक्षम = false सेट करें।

import org.apache.commons.lang.builder.ReflectionToStringBuilder; 
import org.apache.commons.lang.builder.ToStringStyle; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.testng.annotations.Test; 

import javax.persistence.Query; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import java.util.Set; 

public class TestGeneric extends AbstractModelTest { 

    private static final Logger logger = LoggerFactory.getLogger(TestGeneric.class.getName()); 

    /** 
    * This is not a test. Just a convenience method to edit queries 
    */ 
    @Test(enabled = true) 
    public void queryEditor() throws Exception { 
     String query = "SELECT mpe " + 
         " FROM ActiveProduct apt JOIN apt.supportedProduct spt JOIN apt.account act JOIN act.merchantProfile mpe" + 
         " WHERE mpe.id = :mpeId "; 
     Class resultClass = MerchantProfile.class; 
     Map<String, Object> parameters = new HashMap<String, Object>(); 
     parameters.put("mpeId", 1L); 
     performQuery(query, resultClass, parameters); 
    } 

    private <T> void performQuery(String jplQuery, Class<T> type, Map parameters) throws Exception { 
     Query query = this.em.createQuery(jplQuery, type); 

     Set<Map.Entry<String, Object>> rawParameters = parameters.entrySet(); 
     for (Map.Entry<String, Object> entry : rawParameters) { 
      query.setParameter(entry.getKey(), entry.getValue()); 
     } 
     List<T> resultList = query.getResultList(); 

     if (resultList.size() > 0) { 
      int count = 0; 
      StringBuffer resultString; 
      for (Object o : resultList) { 
       resultString = new StringBuffer(++count + " - "); 
       dumpObject(o, resultString); 
       logger.info(resultString.toString()); 
      } 
     } else { 
      logger.info("Empty result list"); 
     } 
    } 

    private void dumpObject(Object o, StringBuffer resultString) throws Exception { 
     if (o == null) { 
      resultString.append("NULL"); 
     } else if (o instanceof Object[]) { 
      Object[] row = (Object[]) o; 
      resultString.append("["); 
      for (int i = 0; i < row.length; i++) { 
       dumpObject(row[i], resultString); 
      } 
      resultString.append("]"); 
     } else if (o instanceof Long || 
        o instanceof Double || 
        o instanceof String) { 
      resultString.append(o.getClass().getName() + ": " + o); 
     } else { 
      resultString.append(ReflectionToStringBuilder.toString(o, ToStringStyle.SHORT_PREFIX_STYLE)); 
     } 
    } 
+0

यदि नामित क्वेरी में कोई त्रुटि है, तो क्या यह विशिष्ट त्रुटि या सामान्य "नामित क्वेरी में त्रुटि" संदेश प्रदान करेगी? –

3

ऐसा लगता है जैसे IntelliJ 10 एक जेपीक्यूएल संपादक के साथ एचएसक्यूएल संपादक का पूरक होगा। (यह मानते हुए कि शाखा 96.xxx संस्करण 10)

+2

बस आइडिया एक्स ईएपी स्थापित किया गया, और वास्तव में इसमें एक जेपीक्यूएल संपादक शामिल है। http://confluence.jetbrains.net/display/IDEADEV/IDEA+X+EAP – Jan

1

आप Vestigo आज़मा सकते हैं। यह एक प्रश्न उपकरण & ब्राउज़र जेडीओ (जेडीओक्यूएल) और जेपीए (जेपीक्यूएल) दोनों का समर्थन करता है और प्लग-इन के रूप में स्टैंड-अलोन या आपके ग्रहण आईडीई में स्थापित किया जा सकता है।

+2

दिलचस्प लग रहा है। लेकिन यह ध्यान दिया जाना चाहिए कि यह एक वाणिज्यिक उत्पाद प्रतीत होता है। – MRalwasser

10

2013 से समाचार: NetBeans 7.3 होगा एक अंतर्निहित JPQL क्वेरी उपकरण: NetBeans 7.0 में सामान के इस तरह के समर्थन के कुछ प्रकार प्रदान किया जा सकता है की तरह

https://blogs.oracle.com/geertjan/entry/test_jpql_with_netbeans_ide

https://blogs.oracle.com/geertjan/resource/run-jpql-query-4.png