SORU
26 AĞUSTOS 2010, PERŞEMBE


Java saklı yordam çağırma / JPA

Basit bir web uygulaması, bir saklı yordam çağrısı ve bazı verileri almak için yazıyorum. Müşteri veritabanı ile etkileşim çok basit bir uygulama. Çalışan kimlik ve şirket kimliği ve saklı yordam çalışan ayrıntıları dönecektir geçiyoruz.

Web uygulama güncelleme/veri silinemiyor ve SQL Server kullanıyor.

Jboss web uygulamam OLARAK dağıtma duyuyorum. JPA saklı yordam veya CallableStatement erişmek için kullanılır. Bu durumda JPA kullanarak herhangi bir avantaj.

Bu saklı yordamı çağırmak için sql ifadesi ne olacak. Daha önce depolanmış yordamları kullandık ve bununla mücadele ediyorum. Google yardımdan çok oldu.

Burada saklı yordamı:

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

Güncelleme:

Başkasının sorunu saklı yordam JPA kullanarak isim için.

Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
                                   EmployeeDetails.class)           
                                   .setParameter(1, employeeId)
                                   .setParameter(2, companyId);

List<EmployeeDetails> result = query.getResultList();

Bir şeyler fark ettim:

  1. parametre adları benim için işe yaramadı, parametre dizini kullanarak deneyin.
  2. sql deyimi "{call sp_name(?,?)}" doğru "(?,?) arama sp_name" yerine
  3. Eğer saklı yordam yalnızca bir satır ile biliyorsanız bile bir sonuç kümesi döndüren ise, alışkanlık iş getSingleResult
  4. resultSetMapping adı geçmesi veya sınıf ayrıntıları sonuç

CEVAP
1 EYLÜL 2013, Pazar


JPA 2.1 şimdi Saklı Yordam destek, okuma here doktor Java.

Örnek:

StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("sales_tax");
// set parameters
storedProcedure.registerStoredProcedureParameter("subtotal", Double.class, ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter("tax", Double.class, ParameterMode.OUT);
storedProcedure.setParameter("subtotal", 1f);
// execute SP
storedProcedure.execute();
// get result
Double tax = (Double)storedProcedure.getOutputParameterValue("tax");

Detaylı örnek here bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jesiel santos

    jesiel santo

    15 Ocak 2009
  • TechShowsYou

    TechShowsYou

    3 Mart 2011
  • Tube Time

    Tube Time

    14 Mayıs 2013