Java 从grails应用程序中终止长时间运行的SQL查询

Java 从grails应用程序中终止长时间运行的SQL查询,java,oracle,grails,jakarta-ee,Java,Oracle,Grails,Jakarta Ee,问这个问题可能会让我看起来很愚蠢,但我想消除我脑海中关于这个问题的任何疑问 所以。。问题是— 我们是否可以从我的grails应用程序中中止/终止一个从我的应用程序本身触发的select SQL 用外行的话来说— 我的屏幕上有“搜索”和“停止”按钮 “搜索”按钮上的操作将准备一个select SQL,执行和获取结果将花费相当长的时间 我想中止长时间运行的SQL,而不仅仅是应用程序停止等待结果。它应该通过单击“停止”按钮在后台中止SQL进程 我的数据库是Oracle 请帮我清除脑子里的垃圾 您可能需

问这个问题可能会让我看起来很愚蠢,但我想消除我脑海中关于这个问题的任何疑问

所以。。问题是—

我们是否可以从我的grails应用程序中中止/终止一个从我的应用程序本身触发的select SQL

用外行的话来说—

我的屏幕上有“搜索”和“停止”按钮 “搜索”按钮上的操作将准备一个select SQL,执行和获取结果将花费相当长的时间 我想中止长时间运行的SQL,而不仅仅是应用程序停止等待结果。它应该通过单击“停止”按钮在后台中止SQL进程 我的数据库是Oracle


请帮我清除脑子里的垃圾

您可能需要使用查询超时。Grails使用Hibernate实现JPA

JPA2持久性属性javax.persistence.query.timeout允许您设置查询的超时,前提是底层JDBC驱动程序支持它

因此,将以下内容添加到grails app/conf/Config.groovy中:

javax.persistence.query.timeout=9000

该值以毫秒为单位,因此为9秒。

到目前为止您编码了什么?我这样做是因为GORM查询在事务中执行,当控制器呈现给客户端时,事务结束。那么,您是否以某种方式在后台保持事务打开?终止会话通常在数据库级别完成。终止运行时间过长的会话似乎不是一个好的做法。多长时间太长?考虑一个流水线程序来返回最初的几个结果,而用户正在等待其余的结果。