2014-10-29 2 views
0

다음은 절차입니다.jpa 2.0을 사용하여 out 매개 변수가있는 저장 프로 시저 호출

create or replace 
    PROCEDURE test (upload_id_in in NUMBER, o in out NUMBER) 
    is 

    begin 

    select safety_id into o from case_smsw_master where safety_id=111722; 

    end; 

다음은 절차를 호출하는 코드입니다.

  Query q = em.createNativeQuery("CALL test(?)"); 
      q.setParameter(1, Long.valueOf(tempCaseId)); 
      q.setHint("org.hibernate.callable", true); 
      Object i=q.executeUpdate();//getResultList();//executeUpdate(); 

예외는 result set meatadata not found입니다. 이유가 무엇 일 수 있습니다.

답변

0

다음 코드를 사용해보십시오.

/**************************************************/ 
/* Call MYSQL Stored Procedure and MAP it to bean */ 
/**************************************************/ 
Query callStoredProcedure_MYSQL = session.createSQLQuery("CALL SP_MYSQL_HIBERNATE (:param1, :param2, :param3)").addEntity(User.class); 
callStoredProcedure_MYSQL.setInteger("param1", 10); 
callStoredProcedure_MYSQL.setInteger("param2", 10); 
callStoredProcedure_MYSQL.setString("param3", "javaQuery"); 

/* callStoredProcedure_MSSQL.list() will execute stored procedure and return the value */ 
List userList = callStoredProcedure_MYSQL.list(); 
if (userList != null && !userList.isEmpty()) { 
for(User user : userList){ 
    System.out.println("Firstname:"+user.getFirstname()); 
} 
} 

/******************************************************************/ 
/* Process custom result of Stored Procedure      */ 
/* Un-comment the code, This will be the same for MSSQL and MYSQL */ 
/******************************************************************/ 
Query callStoredProcedure_MYSQL = session.createSQLQuery("CALL SP_MYSQL_HIBERNATE (:param1, :param2, :param3)"); 
callStoredProcedure_MYSQL.setInteger("param1", 10); 
callStoredProcedure_MYSQL.setInteger("param2", 10); 
callStoredProcedure_MYSQL.setString("param3", "javaQuery"); 

/* callStoredProcedure_MYSQL.list() will execute stored procedure and return the value */ 
List customResult = callStoredProcedure_MYSQL.list(); 
if (customResult != null && !customResult.isEmpty()) { 
Object[] obj = customResult.get(0); 
System.out.println(obj[0]); 
System.out.println(obj[1]);    
} 
+0

사실 내 문제는 내가 엔티티 관리자를 사용해야합니다 ... 거기에 세션 개체를 사용할 수 없습니다. – user3093845

관련 문제