问题描述
我正在尝试将 liquibase gradle 插件集成到我的项目中,以便能够运行 diffChangelog、更新等命令。 我有以下活动
liquibase {
activities {
main {
changeLogFile 'src/main/resources/db/liquibase-changelog.xml'
url appProps['spring.datasource.url']
referenceUrl 'hibernate:spring:com.ourpetpolicy.server.db.entity?dialect=org.hibernate.dialect.PostgresqlDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy'
username appProps['spring.datasource.username']
password appProps['spring.datasource.password']
defaultSchemaName 'public'
}
}
runList = "main"
}
在我的实体中,我导入了一些 3rd 方转换器(例如 com.vladmihalcea.hibernate.type.json.JsonNodeBinaryType),所以当我运行 diffChangelog 时它会抛出以下异常:
1:42:29.008 ERROR [liquibase.integration.commandline.Main]: Unexpected error running Liquibase: Unable to load class [com.vladmihalcea.hibernate.type.json.JsonBinaryType]
liquibase.exception.DatabaseException: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.vladmihalcea.hibernate.type.json.JsonBinaryType]
at liquibase.integration.commandline.CommandLineUtils.createDatabaSEObject(CommandLineUtils.java:132)
at liquibase.integration.commandline.Main.createReferenceDatabaseFromCommandParams(Main.java:1604)
at liquibase.integration.commandline.Main.doMigration(Main.java:1205)
at liquibase.integration.commandline.Main.run(Main.java:229)
at liquibase.integration.commandline.Main.main(Main.java:143)
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.vladmihalcea.hibernate.type.json.JsonBinaryType]
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:136)
at org.hibernate.boot.internal.ClassLoaderAccessImpl.classForName(ClassLoaderAccessImpl.java:67)
at org.hibernate.cfg.annotations.SimpleValueBinder.fillSimpleValue(SimpleValueBinder.java:536)
at org.hibernate.cfg.SetSimpleValueTypeSecondPass.doSecondPass(SetSimpleValueTypeSecondPass.java:25)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1693)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1651)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:295)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.Metadata(EntityManagerFactoryBuilderImpl.java:1224)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255)
at liquibase.ext.hibernate.database.HibernateSpringPackageDatabase.createEntityManagerFactory(HibernateSpringPackageDatabase.java:94)
at liquibase.ext.hibernate.database.HibernateEjb3Database.buildMetadataFromPath(HibernateEjb3Database.java:51)
at liquibase.ext.hibernate.database.HibernateDatabase.buildMetadata(HibernateDatabase.java:136)
at liquibase.ext.hibernate.database.HibernateDatabase.setConnection(HibernateDatabase.java:75)
at liquibase.database.DatabaseFactory.findCorrectDatabaseImplementation(DatabaseFactory.java:129)
at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:149)
at liquibase.integration.commandline.CommandLineUtils.createDatabaSEObject(CommandLineUtils.java:97)
... 4 common frames omitted
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
at com.vladmihalcea.hibernate.type.util.Configuration.getobjectMapperWrapper(Configuration.java:140)
at com.vladmihalcea.hibernate.type.json.JsonBinaryType.<init>(JsonBinaryType.java:29)
at com.vladmihalcea.hibernate.type.json.JsonBinaryType.<clinit>(JsonBinaryType.java:24)
at java.base/java.lang.class.forName0(Native Method)
at java.base/java.lang.class.forName(Class.java:398)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:130)
... 19 common frames omitted
Caused by: java.lang.classNotFoundException: com.fasterxml.jackson.core.JsonProcessingException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.classLoader.loadClass(ClassLoader.java:522)
... 25 common frames omitted
FAILURE: Build Failed with an exception.
当我清理构建并重新运行时会生成更改日志,该日志会删除我数据库中的所有内容。 由此我假设它在我的构建文件夹中查找实体,但那里没有 3rd 方类。
我可以配置插件以在源中查找实体而不是构建中的实体,或者如何在构建中创建依赖项? 或者还有其他解决办法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)