Vì pgJDBC 42.2.5 được phát hành trước (tháng 8 năm 2018) cho bản phát hành PostgreSQL 11 (tháng 10 năm 2018), tôi nghĩ rằng đây hiện là một vấn đề trong trình điều khiển JDBC cho chính PostgreSQL. Tôi đã tạo một Vấn đề trong kho lưu trữ GitHub.
Để có cách giải quyết khác, bạn có thể viết lại STORED PROCEDURE
dưới dạng FUNCTION
và sử dụng @NamedStoredProcedureQuery
hoặc tương tác trực tiếp với JDBC CallableStatement
ví dụ:
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();
Hoặc thực hiện một truy vấn gốc với EntityManager
:
this.em.createNativeQuery("CALL p_raise_wage_employee_older_than(1, 20)");
Tôi sẽ cập nhật câu trả lời này ngay khi nhận được câu trả lời từ người bảo trì pgJDBC.
CẬP NHẬT:
Chủ đề này đã được thảo luận trong danh sách Gửi thư của Postgres ( https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us
) và hiện không có giải pháp. Cách duy nhất là chuyển các truy vấn SQL gốc vào cơ sở dữ liệu hoặc viết lại STORED PROCEDURE
dưới dạng FUNCTION