我正在尝试根据返回游标的oracle存储函数的结果映射一些实体。
我的代码如下所示:
this.getSession().createSQLQuery("{?=call my_pkg.my_func(:myPar1,:myPar2)}")
.addEntity(MyTargetClass.class)
.setParameter("myPar1",par1)
.setParameter("myPar2",par2)
.list();
使用此代码,我得到以下异常:
java.sql.SQLException:在index :: 3
处缺少IN或OUT参数如何告诉Hibernate丢失的参数是游标?
根据这个doc它应该是可能的,但实际上没有实例调用函数的示例代码。
答案 0 :(得分:2)
根据您链接的文件,
要在Hibernate中使用此查询,您需要通过命名查询映射它。
因此,创建一个命名查询,如下所示:
<sql-query name="my_pkg_my_func_SP" callable="true">
<return alias="..." class="MyTargetClass">
<return-property name="..." column="..."/>
...
</return>
{ ? = call my_pkg.my_func(:myPar1,:myPar2) }
</sql-query>
并使用以下内容调用它:
final List<MyTargetClass> myTargetClassList =
this.getSession().getNamedQuery("my_pkg_my_func_SP")
.setParameter("myPar1", par1)
.setParameter("myPar2", par2)
.list();