2010-03-25 14 views
7

यह मेरी समस्या है, मुझे एक बड़ा एसपी उपयोग करना है, और जावा में फिर से लिखने का कोई समय नहीं है। तो मैं हाइबरनेट मानदंडों का उपयोग कर रहा हूं और मुझे नहीं पता कि मैं इसे कॉल कर सकता हूं या नहीं। सभी को धन्यवाद।क्या मैं संग्रहीत प्रक्रिया को हाइबरनेट मानदंडों के साथ कॉल कर सकता हूं?

+0

हाइबरनेट भी आप डेटाबेस निष्पादित करने के लिए अनुमति देता है सीधे कहता है। आप इसे इस तरह से भी कर सकते हैं। –

+1

धन्यवाद आपका उत्तर मिला, लेकिन मैं यह कैसे कर सकता हूं? – Gaston

उत्तर

5

संदर्भ प्रलेखन में Using stored procedures for querying देखें।

मैप किए गए प्रश्न इस तरह से बुलाए जाते हैं।

List employment = sess.getNamedQuery("BigSP") 
    .list(); 

एक मैप की गई क्वेरी इकाइयों को वापस कर सकती है।

<sql-query name="BigSP" callable="true"> 
    <return alias="emp" class="Employment"> 
     <return-property name="employee" column="EMPLOYEE"/> 
     <return-property name="employer" column="EMPLOYER"/> 
     <return-property name="startDate" column="STARTDATE"/> 
     <return-property name="endDate" column="ENDDATE"/> 
     <return-property name="regionCode" column="REGIONCODE"/> 
     <return-property name="id" column="EID"/> 
     <return-property name="salary"> 
      <return-column name="VALUE"/> 
      <return-column name="CURRENCY"/> 
     </return-property> 
    </return> 
    { call BigSP } 
</sql-query> 
2

This document का वर्णन करता है एक संग्रहीत प्रक्रिया, एक देशी प्रश्न के रूप में मार डाला का परिणाम मैप करने के लिए कैसे।

आप इसे मानदंड API के साथ नहीं कर सकते हैं, लेकिन इससे कोई फर्क नहीं पड़ता।

5

नहीं, आपको मूल क्वेरी का उपयोग करने की आवश्यकता है। यदि आप एनोटेशन का उपयोग कर रहे हैं, तो 2.3.2. Mapping native queries देखें।

एक उदाहरण नीचे:

@Entity 
@NamedNativeQuery(
    name="baz", 
    query="call fooProc(:bar, :i)", 
    callable=true, 
    readOnly=true, 
    resultClass=Foo.class 
) 
public class Foo { 
    private Date when; 
    //... 
} 

और यह कॉल करने के लिए:

@Stateless 
public class FooBean implements FooLocal { 
    @PersistenceContext EntityManager em; 

    public Foo getAFoo(string bar, int i) { 
    Foo result = (Foo)em.createNamedQuery("baz").setParameter("bar", bar).setParameter("i", i).getSingleResult(); 
    return result; 
    } 

} 
+0

धन्यवाद थिएंट, लेकिन हम एनोशन का उपयोग नहीं करते हैं :( – Gaston

+0

@ गैस्टन फिर लचलन के जवाब का संदर्भ लें। –

संबंधित मुद्दे

 संबंधित मुद्दे