我们正在尝试从Spring Boot应用程序中运行MSSQL存储过程。问题是这个存储过程写得不好而且太复杂,我们无法在合理的时间内重写。问题的关键似乎是这个存储过程的编写方式;它在执行过程中向调用者抛出多个警告。
所有警告代码都小于20(大多数为16),根据the documentation,这些代码是信息性的,不会导致失败。但是,(我们认为)警告导致JPA(或MSSQL的JDBC驱动程序,其中不清楚哪个)认为查询已完成。查询实际上并没有返回任何内容,它只是进行了一系列连接,计算和插入,这些连接,计算和插入可能应该作为函数而不是存储过程编写。
JPA代码非常简单:
procedureQuery = entityManager.createStoredProcedureQuery(ProcessDataRulesExecutor.DATA_RULES_PROC);
Boolean retVal = procedureQuery.execute();
log.debug("Call to stored proc returned: ", retVal);
retVal
设置为true,这样就可以了。
我不打算分享过程,有孩子在场。我只想说它可以从SSMS和.Net应用程序中正常工作。我们在Java中运行时只遇到问题。
我的问题是,是否有一个标志我可以设置某个地方告诉JPA / JDBC忽略所引发的任何警告,只有当它返回一个返回的代码时才会停止查询?