[SPRING] Session Factory를 사용하여 Java Hibernate에서 SQL 저장 프로 시저를 실행하는 방법?
SPRINGSession Factory를 사용하여 Java Hibernate에서 SQL 저장 프로 시저를 실행하는 방법?
세션 팩토리를 사용하여 Java 절전 모드에서 저장 프로 시저를 호출 할 수 없습니다.
MS SQL Studio에서 잘 작동하는 결과 세트를 반환하고 5 개의 매개 변수를 사용하는 SQL 프로 시저를 작성했습니다.
EXEC SlaGrid @appID=245,@fromYear=2012,@toYear=2013,@fromMon=1,@toMon=12 --- sql
EXEC SlaGrid @applID=:applID,@fromYear=:fromYear,@toYear=:toYear,@fromMon=:fromMon,@toMon=:toMon --hibernate
위 쿼리에 대한 매개 변수를 설정 중입니다.
String queryString = "EXEC SlaGrid @applID=:applID,@fromYear=:fromYear,@toYear=:toYear,@fromMon=:fromMon,@toMon=:toMon"
Query query = sessionFactory.getCurrentSession().createSQLQuery(queryString);
//set query parameters here
query.list() --- giving sql grammer exception
해결법
-
==============================
1.최대 절전 모드 세션에서 callable 문을 사용할 수 있습니다.
최대 절전 모드 세션에서 callable 문을 사용할 수 있습니다.
Connection con = getSessionFactory().getCurrentSession().connection(); /** * Amend to include your parameters and proc */ CallableStatement cs = con.prepareCall( "{ call myprocedure }"); cs.execute();
-
==============================
2.SessionFactory를 생성하고 세션을 연다.
SessionFactory를 생성하고 세션을 연다.
CallableStatement callableStatement = session.connection().prepareCall("call GetMarketDataCDS(?,?)"); callableStatement.setString(1,"JPM"); callableStatement.registerOutParameter(1, OracleTypes.CURSOR); callableStatement.execute(); ResultSet resultSet=(ResultSet) callableStatement.getObject(1);
여기 오라클을 사용하고 내 첫 번째 매개 변수는 IN 매개 변수이고 두 번째는 OUT이지만 여러 행을 반환하는 결과 집합입니다. 마지막 줄에서는 결과 집합에 모든 행을 넣은 다음 행을 반복 할 수 있습니다.
-
==============================
3.간단하게 다음 코드로 해결했습니다 ... CSV로 매개 변수를 전달하십시오. 도움 사람에게 감사드립니다.
간단하게 다음 코드로 해결했습니다 ... CSV로 매개 변수를 전달하십시오. 도움 사람에게 감사드립니다.
String queryString = "SlaGrid 245,2012,2013,1,12" Query query = sessionFactory.getCurrentSession().createSQLQuery(queryString); query.list();
완벽한 작품 :)
-
==============================
4.이 시도
이 시도
Query query = sessionFactory.getCurrentSession().createSQLQuery( "CALL SlaGrid(:appID, :fromYear, :toYear, :fromMon, :toMon)") .setParameter("appID", 245) .setParameter("fromYear", 2012) .setParameter("toYear", 2013) .setParameter("fromMon", 1) .setParameter("toMon", 12);
from https://stackoverflow.com/questions/16007881/how-to-execute-a-sql-stored-procedure-from-java-hibernate-using-session-factory by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 데이터 몽고 그룹 (0) | 2019.01.21 |
---|---|
[SPRING] @Secured 주석은 Autoproxy로 AspectJ 모드에서 작동하지 않는다. (0) | 2019.01.21 |
[SPRING] 스프링 MVC mvc : 자원 위치 속성 (0) | 2019.01.21 |
[SPRING] 스프링 4에서 주석 기반 유효성 검사를 설정하는 방법은 무엇입니까? (0) | 2019.01.21 |
[SPRING] Spring RedirectView에서 어떻게 addObject를 할 것인가? (0) | 2019.01.21 |