2016-02-02 46 views
0

我使用Java 1.7,Hibernate 4與註釋,而不是xml映射,Oracle 11G。 我有這個甲骨文SP:Hibernate Oracle存儲過程缺少表達式異常

PROCEDURE SP_NAME (PI_USERID IN  VARCHAR2, 
        PO_USERLIST OUT SYS_REFCURSOR) 
    IS 
    BEGIN 
     OPEN PO_USERLIST FOR 
      SELECT USERID, NAME 
      FROM SC_SCRCRDA.GSCRSCRCT0045 
      WHERE USERID = TO_NUMBER (PI_USERID) 
     COMMIT; 
    END; 

當我使用Hibernate它調用它從Java說:ORA-00936缺少表達異常。它被拋在了最後一行。 這裏是呼叫:

public Users obtenerUsuario(String usuarioId) throws Exception { 
    Session session = UtilsHelper.getSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 

    List<Object[]> tuples=new ArrayList<Object[]>(); 
    Query query = session.createSQLQuery("CALL PACKAGE.NAME(:userId,:out)"); 
    query = query.setParameter("userId", usuarioId); 
    query= query.setParameterList("out", tuples); 

    **List<Object[]> tuples1= (List<Object[]>) query.list();** 
    ... 
} 

你知道爲什麼這個異常被拋出? 在此先感謝。

回答

0

因爲元組是一個空列表。

將空列表添加爲查詢參數列表時出現異常。不知道爲什麼會發生這種情況 - 似乎並非始終如一...

query= query.setParameterList("out", tuples);