我使用flyway 4.0,hibernate 5.1.0.Final和2个数据库:postgresql 9.4.1208和hsqldb 2.3.1(用于测试)
我们需要监督应用程序的数据库状态。我创建一个SchemaVersionEntity来检查数据库(脚本的版本和最后一个脚本的状态成功)实体列成功的类型是Boolean
我们做jpa验证: 在flyway postgresql中,createMetaDataTable成功映射到布尔值:https://github.com/flyway/flyway/blob/master/flyway-core/src/main/resources/org/flywaydb/core/internal/dbsupport/postgresql/createMetaDataTable.sql
在flyway中的hsql createMetaDataTable成功映射到位:(自v2起存在布尔值)https://github.com/flyway/flyway/blob/master/flyway-core/src/main/resources/org/flywaydb/core/internal/dbsupport/hsql/createMetaDataTable.sql
所以我收到错误:
org.hibernate.tool.schema.spi.SchemaManagementException:架构验证:表[schema_version]中的[success]列遇到错误的列类型;找到[bit(Types#BIT)],但期望[boolean(Types#BOOLEAN)]
什么是最佳解决方案? 修改flyway \ flyway-core \ src \ main \ resources \ org \ flywaydb \ core \ internal \ dbsupport \ hsql?
"success" BOOLEAN NOT NULL
答案 0 :(得分:0)
您可以自定义H2Dialect并在测试配置
中使用它public class CustomH2Dialect extends H2Dialect {
public CustomH2Dialect() {
super();
registerColumnType(Types.BOOLEAN, "bit");
}
}