我在生产中使用了postgres,并且其中的表具有jsonb类型的列。我正在尝试使用junits和内存嵌入式数据库测试这些查询。
过去,我使用H2和HSQL来测试在MySql或Sybase上运行的查询。但是,由于H2 / HSQL不支持jsonb类型,因此在postgres上使用它们时遇到了麻烦。
Caused by: org.hsqldb.HsqlException: type not found or user lacks privilege: JSONB
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.ParserDQL.readTypeDefinition(Unknown Source)
at org.hsqldb.ParserTable.readColumnDefinitionOrNull(Unknown Source)
at org.hsqldb.ParserTable.readTableContentsSource(Unknown Source)
at org.hsqldb.ParserTable.compileCreateTableBody(Unknown Source)
at org.hsqldb.ParserTable.compileCreateTable(Unknown Source)
at org.hsqldb.ParserDDL.compileCreate(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 18 more
是否有其他替代方法可用,或者是否缺少使jsonb与H2 / HSQL一起使用的技巧?
答案 0 :(得分:0)
H2不支持JSONB列类型,找到此替代方法, 在postgres中创建测试数据库,并在集成测试中使用
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles({"test"})
在application-test.yml中定义db属性