PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Tidak dapat memanggil 11 Prosedur Tersimpan PostgreSQL dengan Hibernate

Karena pgJDBC 42.2.5 dirilis sebelum (Agustus 2018) ke rilis PostgreSQL 11 (Okt, 2018), saya pikir ini saat ini menjadi masalah dalam driver JDBC untuk PostgreSQL itu sendiri. Saya telah membuat masalah dalam repositori GitHub.

Untuk solusinya, Anda dapat menulis ulang STORED PROCEDURE sebagai FUNCTION dan gunakan @NamedStoredProcedureQuery atau langsung berinteraksi dengan CallableStatement J JDBC misalnya:

Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/", "postgres", "postgres");

CallableStatement callableStatement = conn.prepareCall("{call f_raise_wage_employee_older_than(?,?)}");
callableStatement.setInt(1, 20);
callableStatement.setInt(2, 500);
callableStatement.executeUpdate();

Atau jalankan kueri asli dengan EntityManager :

this.em.createNativeQuery("CALL p_raise_wage_employee_older_than(1, 20)");

Saya akan memperbarui jawaban ini segera setelah saya mendapatkan jawaban dari pengelola pgJDBC.

PERBARUI:

Topik ini sudah dibahas di milis Postgres (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ) dan saat ini tidak ada solusi. Satu-satunya cara adalah meneruskan kueri SQL asli ke database atau menulis ulang STORED PROCEDURE sebagai FUNCTION



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kendala Postgres memastikan satu kolom dari banyak ada?

  2. Apakah ada operator TERTUTUP postgres?

  3. Pengecualian Geodjango saat mengimpor Django.contrib.gis.gdal:OSError:/usr/lib/libgdal.so.1:simbol tidak terdefinisi:sqlite3_column_table_name

  4. Mendapatkan hasil yang diketik dari SQL mentah ActiveRecord

  5. Setel zona waktu khusus di Django/PostgreSQL (Waktu Standar India)