Saya menulis aplikasi web sederhana untuk memanggil prosedur tersimpan dan mengambil beberapa data. Ini adalah aplikasi yang sangat sederhana, yang berinteraksi dengan database klien. Kami memberikan id karyawan dan id perusahaan dan prosedur yang tersimpan akan mengembalikan detail karyawan.
Aplikasi web tidak dapat memperbarui / menghapus data dan menggunakan SQL Server.
Saya menerapkan aplikasi web saya di Jboss AS. Haruskah saya menggunakan JPA untuk mengakses prosedur tersimpan atau CallableStatement
. Keuntungan menggunakan JPA dalam hal ini.
Juga apa yang akan menjadi pernyataan sql untuk memanggil prosedur tersimpan ini. Saya belum pernah menggunakan prosedur tersimpan sebelumnya dan saya berjuang dengan yang satu ini. Google tidak banyak membantu.
Berikut adalah prosedur yang tersimpan:
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
Memperbarui:
Untuk orang lain yang mengalami masalah memanggil prosedur tersimpan menggunakan JPA .
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Hal-hal yang saya perhatikan:
- Nama parameter tidak berfungsi untuk saya, jadi coba gunakan indeks parameter.
- Pernyataan sql yang benar,
{call sp_name(?,?)}
bukancall sp_name(?,?)
- Jika prosedur tersimpan mengembalikan set hasil, bahkan jika Anda tahu hanya dengan satu baris,
getSingleResult
tidak akan berfungsi - Berikan
resultSetMapping
nama atau detail kelas hasil