[hibernate-dev] StoredProcedureQuery holds on to the underlying CallableStatement

Steve Ebersole steve at hibernate.org
Mon May 16 10:36:11 EDT 2016


API?  StoredProcedureQuery#unwrap is a JPA contract.  Its there.  You mean
the impl of that?  The ability to unwrap StoredProcedureQuery to
ProcedureOutputs has been there for some time.  Its in 5.0 at least.

On Mon, May 16, 2016 at 9:22 AM Vlad Mihalcea <mihalcea.vlad at gmail.com>
wrote:

> Maybe the API has changed on master, I'll check it tomorrow when I
> integrate my pending PRs.
>
> Vlad
>
> On Mon, May 16, 2016 at 5:11 PM, Steve Ebersole <steve at hibernate.org>
> wrote:
>
>> No, I mean what I said :)
>>
>> StoredProcedureQueryImpl#unwrap accounts for ProcedureOutputs
>>
>>
>> On Mon, May 16, 2016 at 8:56 AM Vlad Mihalcea <mihalcea.vlad at gmail.com>
>> wrote:
>>
>>> Hi,
>>>
>>> You are right. I forgot this is a JPA interface. You mean we need to
>>> cast it to the Impl class and get the ProcedureOutput from there:
>>>
>>> spq.unwrap( StoredProcedureQueryImpl.class
>>> ).getProcedureOutputs().close()
>>>
>>> Vlad
>>>
>>> On Mon, May 16, 2016 at 4:24 PM, Steve Ebersole <steve at hibernate.org>
>>> wrote:
>>>
>>>> I think it is reasonable to have have an ability to release the
>>>> underlying CallableStatement.  I think its a matter of how and where to
>>>> expose that though.  StoredProcedureQuery is a JPA contract, so we
>>>> can't add it there.  Also StoredProcedureQueryImpl is an internal
>>>> class and we generally discourage users from binding to that contracts.
>>>>
>>>> I'd actually vote we add this method to ProcedureOutputs and JPA users
>>>> would be expected to do `spq.unwrap( ProcedureOutputs.class ).close()`
>>>>
>>>> On Mon, May 16, 2016 at 7:42 AM Vlad Mihalcea <mihalcea.vlad at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I got this very interesting feature request on our forum:
>>>>>
>>>>>
>>>>> https://forum.hibernate.org/viewtopic.php?f=1&t=1043273&p=2489575#p2489575
>>>>>
>>>>> Looks like the StoredProcedureQuery holds on to the CallableStatement
>>>>> object, which only gets closed when the LogicalConnectionManagedImpl
>>>>> object
>>>>> is closed too (when the transaction is committed).
>>>>>
>>>>> I guess we could provide a close() method so that users can decide if
>>>>> they
>>>>> want to close the underlying CallableStatement right after the call is
>>>>> executed.
>>>>>
>>>>> What do you think? Should I add a New Feature issue on Jira?
>>>>>
>>>>> Vlad
>>>>> _______________________________________________
>>>>> hibernate-dev mailing list
>>>>> hibernate-dev at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>>>
>>>>
>>>
>


More information about the hibernate-dev mailing list