gpt4 book ai didi

java - 有没有一种方法可以使用嵌入式数据库来测试 Postgres Jsonb 查询以进行单元测试?

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:38 24 4
gpt4 key购买 nike

我想在 Java Spring-boot Postgres native 查询中对 jsonb 数据类型进行单元测试,而不使用实际的数据库。而是使用一些嵌入式数据库或其他方法,但像 H2 这样的嵌入式数据库不支持 Postgres jsonb 特定运算符,例如 ->>#>> 等。

有什么办法可以做到这一点吗?还请建议任何其他方法。

查询示例:

@Query(value = "SELECT * FROM table WHERE column ->> 'Id'=?1", nativeQuery = true)
public Entity fertchById(String id);

最佳答案

如果您正在使用 H2 数据库,并且希望在不使用 docker 和 testcontainers(在评论中提到)的情况下使用 JSONB PostgreSQL 功能,您可以定义自定义 H2 方言。

我找到了这种方言的例子here :

public class CustomH2Dialect extends H2Dialect {

public CustomH2Dialect() {
this.registerColumnType(Types.JAVA_OBJECT, "jsonb");
}


@Override
public void contributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) {
super.contributeTypes(typeContributions, serviceRegistry);
typeContributions.contributeType(new JsonStringType(), "jsonb");
}
}

如您所见,Liquibase 的问题仍然悬而未决,您绝对应该考虑 testcontainers或者直接使用 PostgreSQL 的另一种方式。

关于java - 有没有一种方法可以使用嵌入式数据库来测试 Postgres Jsonb 查询以进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59926910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com