반응형
JPA 2.1 / 최대 절전 모드 4를 사용하여 저장 프로시저에 값 목록 전달
문자열 목록을 포함하는 저장 프로시저가 있습니다(Hibernate 문서에 따르면 저장 프로시저에 대한 제한 사항을 따릅니다).
PROCEDURE count_active_esc(p_count OUT NUMBER, p_codes IN string_list);
어디에string_list
는 사용자 지정 유형입니다.
CREATE OR REPLACE TYPE string_list IS TABLE OF VARCHAR(100)
JPA 엔티티 관리자(JPA 2.1의 새로운 기능)에서 호출하려고 합니다.
배열을 사용하려고 했습니다.
StoredProcedreQuery query = entityManager.createNamedStoredProcedureQuery("count_active_esc");
query.registerStoredProcedureParameter("p_count", Integer.class, ParameterMode.OUT);
query.registerStoredProcedureParameter("p_codes", String[].class, ParameterMode.IN);
query.setParameter("p_codes", new String[] { "AEST" });
query.getOutputParameterValue("p_count"); // <<<<< throws an exception
그리고 예외를 받았습니다.
PLS-00306: wrong number or types of arguments in call to 'COUNT_ACTIVE_ESC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
그리고 내가 목록을 통과하면:
StoredProcedreQuery query = entityManager.createNamedStoredProcedureQuery("count_active_esc");
query.registerStoredProcedureParameter("p_count", Integer.class, ParameterMode.OUT);
query.registerStoredProcedureParameter("p_codes", List.class, ParameterMode.IN); // <<<<< throws an exception
query.setParameter("p_codes", new ArrayList<String> {{ "AEST" }});
query.getOutputParameterValue("p_count");
던집니다java.lang.IllegalArgumentException: Type cannot be null
추가하기query.setHint("org.hibernate.callable", "true")
도움이 되지 않았습니다.
JPA 또는 최대 절전 모드에서 이 작업을 수행하는 올바른 방법은 무엇입니까?JDBC에 의존하지 않고 가능한가요?
환경: JPA 2.1, Hibernate 4.3.5, Oracle
Integer.class를 Types로 변경합니다.INTEGER
언급URL : https://stackoverflow.com/questions/31705837/passing-a-list-of-values-to-a-stored-procedure-using-jpa-2-1-hibernate-4
반응형
'programing' 카테고리의 다른 글
알려진 두 문자열 사이의 문자열을 선택하는 SQL 쿼리 (0) | 2023.11.04 |
---|---|
추가 문자 입력 금지 (0) | 2023.11.04 |
html 웹 페이지의 모든 요소에 대해 글꼴 속성을 지정하는 방법은 무엇입니까? (0) | 2023.11.04 |
gcc를 사용하여 c 프로그램을 컴파일할 때 충돌하는 유형 오류 (0) | 2023.10.30 |
데이터베이스는 어떻게 물리적으로 파일 시스템에 데이터를 저장합니까? (0) | 2023.10.30 |