org.hibernate.QueryException:预期的位置参数计数:1,实际参数:[] [CALL GET_ALL_ITEM_TYPE(?)]

时间:2017-03-15 08:59:59

标签: java hibernate

程序

CREATE OR REPLACE PROCEDURE GET_ALL_ITEM_TYPE 
(
    cur_OUT OUT SYS_REFCURSOR 
    )    
AS 
BEGIN
 OPEN cur_OUT FOR 
 SELECT * FROM PG_ITEM_TYPE ;
END GET_ALL_ITEM_TYPE;

模型类

@NamedNativeQueries({

    @NamedNativeQuery(
            name = "getAllItemType",
            query = "CALL GET_ALL_ITEM_TYPE(?)",
            resultClass = GdItemType.class
            )
})

DAO

@Override
    public List<GdItemType> getAllGdItemType() {
        Session session = this.sessionFactory.getCurrentSession();
        Query query =  session.getNamedQuery("getAllItemType");
        List<GdItemType> result = query.list();
        return result;

    }

我收到错误预期位置参数计数:1,实际参数:[] [CALL GET_ALL_ITEM_TYPE(?)]。 我无法理解这个问题是什么。

1 个答案:

答案 0 :(得分:1)

您的存储过程有一个输出参数,映射包含对它的引用。因此,Hibernate期望提供参数。

您可以尝试添加Hibernate查询提示

@javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") }

或将存储过程映射更改为

@NamedNativeQueries({

    @NamedNativeQuery(
            name = "getAllItemType",
            query = "? = CALL GET_ALL_ITEM_TYPE()",
            resultClass = GdItemType.class
            )
})