ฉันกำลังเขียนเว็บแอปพลิเคชันง่ายๆเพื่อเรียกขั้นตอนการจัดเก็บและดึงข้อมูลบางอย่าง มันเป็นแอปพลิเคชั่นที่ง่ายมากซึ่งโต้ตอบกับฐานข้อมูลของลูกค้า เราส่งรหัสพนักงานและรหัส บริษัท และขั้นตอนที่จัดเก็บจะส่งกลับรายละเอียดพนักงาน
เว็บแอปพลิเคชันไม่สามารถอัปเดต / ลบข้อมูลและกำลังใช้ SQL Server
ฉันกำลังปรับใช้เว็บแอปพลิเคชันของฉันใน Jboss AS ฉันควรใช้ JPA เพื่อเข้าถึงโพรซีเดอร์ที่เก็บไว้หรือCallableStatement
. ข้อได้เปรียบของการใช้ JPA ในกรณีนี้
นอกจากนี้คำสั่ง 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
อัปเดต:
สำหรับคนอื่นมีปัญหาโทรเก็บขั้นตอนการใช้JPA
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
สิ่งที่ฉันสังเกตเห็น:
- ชื่อพารามิเตอร์ใช้ไม่ได้สำหรับฉันดังนั้นลองใช้ดัชนีพารามิเตอร์
- แก้ไขคำสั่ง sql
{call sp_name(?,?)}
แทนcall sp_name(?,?)
- หากกระบวนงานที่จัดเก็บส่งคืนชุดผลลัพธ์แม้ว่าคุณจะทราบด้วยแถวเดียว แต่ก็
getSingleResult
ไม่ได้ผล - ส่ง
resultSetMapping
ชื่อหรือรายละเอียดคลาสผลลัพธ์