【发布时间】:2020-05-12 13:54:09
【问题描述】:
我想在 Java Spring-boot Postgres 本机查询中对 jsonb 数据类型进行单元测试,而不会触及实际的 DB。而不是使用一些嵌入式数据库或其他方法,但是像 H2 这样的嵌入式数据库不支持 Postgres jsonb 特定运算符,如 @987654322 @、#>> 等
有什么办法可以解决这个问题吗?也请提出任何其他相同的方法。
查询示例:
@Query(value = "SELECT * FROM table WHERE column ->> 'Id'=?1", nativeQuery = true)
public Entity fertchById(String id);
【问题讨论】:
-
使用类似 testcontainers 的东西来引导 PostgreSQL,这确实需要 docker 可用。嵌入式解决方案不起作用,jsonb 的东西适用于 PostgreSQL,所以不使用另一个数据库来测试 Postgres 特定的东西显然不起作用。
-
如果你需要一个像 Postgres 一样工作和行为的数据库,你唯一的选择是使用 Postgres。如果您想知道您的查询是否在 Postgres 上正常工作,任何针对“模拟数据库”的测试都将毫无意义
-
我同意你应该在 Testcontainers 上使用 postgres。但是这里有答案stackoverflow.com/a/50837767/66686
标签: java postgresql spring-boot jsonb embedded-database