oracle – 通过Hibernate获取PL / SQL函数的返回值

我在Oracle数据库中有一个PL / SQL函数,我无法更改.此函数采用标识实体的参数,创建该实体的副本,然后返回副本的ID.这看起来像

功能copy_entity(id IN NUMBER)返回编号

我需要从Hibernate调用这个函数.我尝试使用类似的东西创建一个命名的SQL查询

CALL copy_entity(:id)

作为查询,但从这个我似乎无法获得函数的返回值. Hibernate的“返回标量”和类似的选项需要返回一个列名,而我没有列名.这引导我

SELECT copy_entity(:id)AS newEntityId

使用newEntityId作为列名称的“return-scalar”,但是这也没有用,因为Oracle会抛出一个异常,我不能在SELECT中调用INSERT(保存副本).

有没有办法获得这样的PL / SQL函数的返回值?该功能实际上要复杂得多,并且在应用程序的其他部分仍然需要,因此重写它并不是一个真正的选择.

最佳答案 我希望/您认为可以使用匿名PL / SQL块:

开始
  :myresult = copy_entity(:id);
结束;

现在你的结果是’列名’myresult.

我从来没有使用过hibernate所以我希望它有效.我不知道Hibernate有多灵活.

点赞