मैं एक संग्रहीत प्रक्रिया को कॉल करने और कुछ डेटा पुनर्प्राप्त करने के लिए एक साधारण वेब एप्लिकेशन लिख रहा हूं। इसका एक बहुत ही सरल अनुप्रयोग है, जो क्लाइंट के डेटाबेस के साथ सहभागिता करता है। हम कर्मचारी आईडी और कंपनी आईडी पास करते हैं और संग्रहीत प्रक्रिया कर्मचारी विवरण वापस कर देगी।
वेब एप्लिकेशन डेटा को अपडेट / डिलीट नहीं कर सकता है और SQL सर्वर का उपयोग कर रहा है।
मैं अपने वेब एप्लिकेशन को Jboss AS में तैनात कर रहा हूं। क्या मुझे संग्रहीत कार्यविधि का उपयोग करने के लिए जेपीए का उपयोग करना चाहिए या CallableStatement
। इस मामले में जेपीए का उपयोग करने का कोई फायदा।
इसके अलावा इस संग्रहीत प्रक्रिया को कॉल करने के लिए sql कथन क्या होगा। मैंने पहले कभी भी संग्रहीत प्रक्रियाओं का उपयोग नहीं किया है और मैं इससे जूझ रहा हूं। Google बहुत मदद नहीं कर रहा था।
यहाँ संग्रहीत प्रक्रिया है:
CREATE procedure getEmployeeDetails (@employeeId int, @companyId int)
as
begin
select firstName,
lastName,
gender,
address
from employee et
where et.employeeId = @employeeId
and et.companyId = @companyId
end
अपडेट करें:
किसी और को जेपीए के उपयोग से संग्रहीत प्रक्रिया को कॉल करने में समस्या हो सकती है ।
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
मैंने जिन चीजों पर ध्यान दिया है:
- पैरामीटर नाम मेरे लिए काम नहीं करते थे, इसलिए पैरामीटर इंडेक्स का उपयोग करने का प्रयास करें।
- के
{call sp_name(?,?)}
बजाय सही एसक्यूएल बयानcall sp_name(?,?)
- यदि संग्रहीत प्रक्रिया एक परिणाम सेट लौटा रही है, भले ही आप केवल एक पंक्ति के साथ जानते हों,
getSingleResult
अभ्यस्त काम - एक
resultSetMapping
नाम या परिणाम वर्ग विवरण पास करें