如何在每次查询之前调用其他SQL?

时间:2016-07-22 16:46:40

标签: java postgresql jooq plv8

我有一个使用plv8引擎的数据库,并且存储了用coffescript编写的存储过程。

当我使用jDBI时,为了调用这些程序,在打开连接后我必须运行:

SET plv8.start_proc = 'plv8_init';

将JOOQ与javax.sql.DataSource一起使用时,我可以做类似的事情吗?

1 个答案:

答案 0 :(得分:0)

一种选择是使用ExecuteListener。您可以通过实现executeStart()方法挂钩查询执行生命周期:

new DefaultExecuteListener() {
    @Override
    public void executeStart(ExecuteContext ctx) {
        DSL.using(ctx.connection()).execute("SET plv8.start_proc = 'plv8_init'");
    }
}

现在,将上述ExecuteListener提供给您的Configuration,您就完成了。

另见手册: http://www.jooq.org/doc/latest/manual/sql-execution/execute-listeners