我在测试中使用 h2 db。接下来是我的测试 h2 数据库设置:
private static final String JDBC_URL = "jdbc:h2:mem:test;MODE=PostgreSQL;DB_CLOSE_DELAY=-1";
Connection connection = DriverManager.getConnection(JDBC_URL);
我尝试过 2.2.220 和 2.1.214 h2 版本。 接下来是 SQL 查询:
var query = SELECT json_build_object('product', c."info"->'product') as info FROM item."Item" AS c
INNER JOIN (SELECT "rootId", MAX("revisionNo") AS maxRevisionNo FROM item."Item" WHERE "cRootId" = ?
GROUP BY "rootId" ) AS subquery ON c."rootId" = subquery."rootId" AND c."revisionNo" = subquery.maxRevisionNo WHERE c."state" = 'active'
我正在尝试用它创建一个准备好的声明:
var statement = connection.prepareStatement(query);
并得到错误:
org.h2.jdbc.JdbcSQLSyntaxErrorException:函数“JSON_BUILD_OBJECT” 没有找到
在真实的 Postgres 数据库中一切正常,但在 Postgres 模式下使用 h2 进行测试时失败。 我可以修复它吗?如何修复?非常感谢您的关注和参与。