我在嵌入式H2数据库上有一个长时间运行的选择查询,并希望允许用户取消查询。
如何做到这一点?我找不到任何关于此事的内容。
[UPDATE] 更具体地说,我正在使用JPA运行我的查询。如何停止查询?
答案 0 :(得分:5)
H2支持查询timeout setting。您可以在数据库URL中设置此项,如下所示:jdbc:h2:~/db/test;query_timeout=10000
。 (也许这对你来说不是正确的方法,但也可能是其他人阅读这个问题。)
您还可以使用cancel_session
function取消在其他连接(会话)中运行的查询。但为此你需要启用多线程模式,目前不推荐用于生产用途(它在1.3.175版本中仍然是实验性的)。
答案 1 :(得分:0)
如果您有一些可能需要很长时间的查询,请不要使用JPA。创建自己的语句,以便取消它。
或者,获取像log4jdbc这样的JDBC代理的源代码,并添加允许您获取每个线程的连接和语句的代码。这将允许您在JPA将其发送到代理后获取声明。