H2数据库:中止查询

时间:2014-02-24 10:07:37

标签: sql jpa jdbc h2

我在嵌入式H2数据库上有一个长时间运行的选择查询,并希望允许用户取消查询。

如何做到这一点?我找不到任何关于此事的内容。

[UPDATE] 更具体地说,我正在使用JPA运行我的查询。如何停止查询?

2 个答案:

答案 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将其发送到代理后获取声明。