Avatar
0
Thân Nam Teacher
Thân Nam Teacher
Lỗi truyền ParameterName trong Stored Procedure trong bản Spring 3.x
Em chào mọi người.

Trong quá trình nâng cấp dự án sử dụng Spring 2.7.x lên bản Spring 3.x thì em gặp phải lỗi call Stored Procedure theo tên Param.

ví dụ Khi gọi Store có tên example(@p_channel_code , @agent_code) trong SQL Server

vị trí các param lần lượt của store khi tạo là: @p_channel_code , @agent_code

Code (đính kèm) thì đăng kí lần lượt các param @agent_code,@p_channel_code

  • > Sau khi chạy code và call Store giá trị nhận được dưới store đang nhận @agent_code = @p_channel_code, @p_channel_code = @agent_code, Em có chỉnh code đăng kí sét giá trị theo index param thì được.

... mọi người có gặp tình trạng này không ạ.

StoredProcedureQuery storedProcedure = entityManager.createStoredProcedureQuery("example"); storedProcedure.registerStoredProcedureParameter("@agent_code", String.class, ParameterMode.IN); storedProcedure.registerStoredProcedureParameter("@p_channel_code", String.class, ParameterMode.IN); storedProcedure.setParameter("@agent_code", agentCode); storedProcedure.setParameter("@p_channel_code", channelCode);

  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Teacher
tvd12 Teacher
Trong ví dụ này procedure FIND_CAR_BY_YEAR anh cũng thấy nó dùng:
StoredProcedureQuery storedProcedure = 
          entityManager
            .createStoredProcedureQuery("FIND_CAR_BY_YEAR",Car.class)
            .registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN)
            .setParameter(1, 2015);

Có vẻ spring 3.x có sự khác biệt nào đó.

  • 0
  • Reply
Vâng anh, debug vào bên trong thư viện thì nó không còn hỗ trợ đăng kí paramname ở bản spring 3.x r ạ , không biết spring còn cập nhật nào khác không
  • Tại phiên bản Spring 3.x sử dụng thư viện hibernate-core:6.4.1.Final class ExtractedDatabaseMetaData có giá trị supportsNamedParameters = false (không hỗ trợ query param theo tên)
 –  Thân Nam 1706499031000