我在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有多灵活.