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

Vlad Mihalcea mihalcea.vlad at gmail.com
Mon May 16 11:41:28 EDT 2016


I understand what you mean now. Even before HEM< the EM could be unwrapped
to a Session, even if the Session was a delegate to EntityManagerImpl, and
EMI was not implementing the Session interface.

On Mon, May 16, 2016 at 5:36 PM, Steve Ebersole <steve at hibernate.org> wrote:

> 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