postgresql org.h2.jdbc.JdbcSQLSyntaxErrorException:函数“JSON_BUILD_OBJECT”未找到

ds97pgxw  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(155)

我在测试中使用了h2 db。下面是我的测试h2 db设置:

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进行测试时失败。我能修复它吗?如何修复?非常感谢您的关注和参与。

z9smfwbn

z9smfwbn1#

H2没有JSON_BUILD_OBJECT内置函数。这似乎是一个PostgreSQL函数。使用相同的数据库进行测试和生产,或者将查询更改为使用H2 JSON_OBJECT函数(http://www.h2database.com/html/functions.html#json_object)。我推荐前者,这样您的测试就可以与应用程序稍后将要使用的测试相匹配。

相关问题