H2 别名函数被多次调用

问题描述 投票:0回答:1

所以我创建了一个 H2 别名函数来模拟存储过程的结果。

存储过程有 3 个声明的 Integer 输入参数。在我的测试中,我注册别名如下。

jdbcTemplate.execute("CREATE ALIAS <name of my stored proc> FOR 'com.nwm.ird.irddbdao.business.repository.trade.query.H2AliasFunction.functionName'")

当我执行测试时,别名函数被调用3次。第一次调用所有输入参数均为 null,在后续调用中,它将使用正确设置的值来调用别名。

有谁知道为什么有 3 次调用,即使 proc 只从 DAO 层调用一次?

h2
1个回答
0
投票

使用函数作为表格 返回结果集的函数可以像表一样使用。但是,在这种情况下,该函数至少被调用两次:第一次是在解析语句以收集列名称时(参数设置为 null,在编译时未知)。然后,在执行语句以获取数据时(如果这是联接,则可能多次)。如果调用该函数只是为了获取列列表,则传递给该函数的连接的 URL 为 jdbc:columnlist:connection。否则,连接的 URL 为 jdbc:default:connection。

© www.soinside.com 2019 - 2024. All rights reserved.