আমি একটি সঞ্চিত পদ্ধতিতে কল করতে এবং কিছু ডেটা পুনরুদ্ধার করার জন্য একটি সাধারণ ওয়েব অ্যাপ্লিকেশন লিখছি। এটি একটি খুব সাধারণ অ্যাপ্লিকেশন, যা ক্লায়েন্টের ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করে। আমরা কর্মচারী আইডি এবং সংস্থার আইডি পাস করি এবং সঞ্চিত পদ্ধতি কর্মীদের বিবরণ ফিরিয়ে দেবে।
ওয়েব অ্যাপ্লিকেশন ডেটা আপডেট / মুছতে পারে না এবং এসকিউএল সার্ভার ব্যবহার করে।
আমি আমার ওয়েব অ্যাপ্লিকেশনটি জবস এএস-এ স্থাপন করছি। সঞ্চিত পদ্ধতি অ্যাক্সেস করতে আমি কি জেপিএ ব্যবহার করব বা CallableStatement
। এক্ষেত্রে জেপিএ ব্যবহারের কোনও সুবিধা।
এছাড়াও এই সঞ্চিত পদ্ধতিটি কল করার জন্য বর্ধিত বিবরণটি কী হবে। আমি আগে কখনও সঞ্চিত পদ্ধতি ব্যবহার করি নি এবং আমি এটির সাথে লড়াই করছি। গুগল খুব একটা সাহায্য ছিল না।
এখানে সঞ্চিত পদ্ধতি:
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(?,?)}
পরিবর্তে sql বিবৃতি সঠিক করুনcall sp_name(?,?)
- সঞ্চিত পদ্ধতি ফলে সেট ফিরে আসছে, এমনকি যদি আপনি শুধুমাত্র এক সারি সঙ্গে জানেন, তাহলে
getSingleResult
অভ্যস্ত কাজ - একটি
resultSetMapping
নাম বা ফলাফল শ্রেণীর বিবরণ পাস করুন