Sweet, thanks On Mon, Oct 16, 2017 at 10:59 AM Robert Marcano <rob...@marcanoonline.com> wrote:
> On 10/11/2017 03:15 PM, Vlad Mihalcea wrote: > > You can open a GitHub issue for JPA. Meanwhile, you can work around it > > as you suggested. > > Opened an issue on JPA spec https://github.com/javaee/jpa-spec/issues/162 > > > > > On 11 Oct 2017 9:08 pm, "Robert Marcano" <rob...@marcanoonline.com > > <mailto:rob...@marcanoonline.com>> wrote: > > > > Migrating code from the Hibernate API to JPA, I found a stored > procedure > > being called on a loop that was generating DB2 errors [1] on tests. > This > > error is caused in this case for having a lot of not closed > statements. > > > > The problem didn't happen using ProcedureCall Hibernate API because > the > > method getOutputs() and release() from the Outputs instance are > > available. > > > > StoredProcedureQuery JPA API doesn't have any way to "close" the > query > > and by that, the statement. Reusing the same instance of > > StoredProcedureQuery trying to only leak an unclosed statement but > that > > doesn't help either, ProcedureCallImpl is creating a new statement > for > > every call [2]. > > > > The only option is to unwrap the StoredProcedureQuery to an > > StoredProcedureQuery and release the Outputs instance. > > > > I don't think there is a way to avoid this without enhancing the JPA > > API. Client code can call an store procedure and in some cases not > > caring about all the results, so there is no way for a JPA > > implementation to know when to close the statement. > > > > Making StoredProcedureQuery an AutoCloseable may help, but it will > > contrast with other Query types that don't need to be closed. > > > > Note: It is not frequent to call many store procedures on a loop, I > > would have preferred to just create a new procedure with the loop, > but > > for this application the conditions about when to call the procedure > for > > each iteration are outside the database. > > > > [1] http://www-01.ibm.com/support/docview.wss?uid=swg21504334 > > <http://www-01.ibm.com/support/docview.wss?uid=swg21504334> > > [2] > > > https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java#L437 > > < > https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java#L437 > > > > > > > > _______________________________________________ > > hibernate-dev mailing list > > hibernate-dev@lists.jboss.org <mailto:hibernate-dev@lists.jboss.org> > > https://lists.jboss.org/mailman/listinfo/hibernate-dev > > <https://lists.jboss.org/mailman/listinfo/hibernate-dev> > > > > _______________________________________________ > hibernate-dev mailing list > hibernate-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/hibernate-dev > _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev