Filipe Silva
Filipe Silva

Reputation: 1

Unknown database: Hibernate generate a liquibase:diff

I am using Spring Boot 2.5.9 I am attempting to generate a liquibase:diff based on my JPA Entities and a H2 database file. When I attempt to do so, I have the following error:

[INFO] Cannot load service java.util.ServiceConfigurationError: liquibase.database.Database: liquibase.ext.hibernate.database.HibernateSpringBeanDatabase Unable to get public no-arg constructor at java.util.ServiceLoader.fail (ServiceLoader.java:582) at java.util.ServiceLoader.getConstructor (ServiceLoader.java:673) at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService (ServiceLoader.java:1233) at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext (ServiceLoader.java:1265) at java.util.ServiceLoader$2.hasNext (ServiceLoader.java:1300)

(...)

[INFO] ------------------------------------------------------------------------
[WARNING] Unknown database: Hibernate
[INFO] Performing Diff on database ADMIN @ jdbc:h2:file:./database-dev (Default Schema: PUBLIC) [WARNING] Potentially ignored key(s) in property file liquibase.properties
- 'diffChangeLogFile'
- 'outputChangeLogFile'
[INFO] Creating snapshot
[WARNING] Unable to retrieve the list of catalog names from the database metadata
[INFO] Logging exception.
[INFO] ERROR: Exception Details
[INFO] ERROR: Exception Primary Class: NullPointerException
[INFO]
[INFO] ERROR: Exception Primary Source: H2 2.2.224 (2023-09-17) [INFO] Command execution complete

Liquibase dependency in POM.xml

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>4.27.0</version>
</dependency>

Plugin config in POM.xml

<plugin>
     <groupId>org.liquibase</groupId>
     <artifactId>liquibase-maven-plugin</artifactId>
     <version>4.27.0</version>
     <configuration>
         <propertyFileWillOverride>true</propertyFileWillOverride>
         <propertyFile>liquibase.properties</propertyFile>
         <verbose>true</verbose>
     </configuration>
     <dependencies>
         <dependency>
             <groupId>org.liquibase.ext</groupId>
             <artifactId>liquibase-hibernate5</artifactId>
             <version>4.27.0</version>
         </dependency>
         <dependency>
             <groupId>com.h2database</groupId>
             <artifactId>h2</artifactId>
             <version>2.2.224</version>
         </dependency>
    </dependencies>
</plugin>

liquibase.properties file

url=jdbc:h2:file:./database-dev;CIPHER=AES;MODE=PostgreSQL
username=admin
password=password password

outputChangeLogFile=src/main/resources/db/changelog/db.changelog.sql
changeLogFile=src/main/resources/db/changelog/db.changelog.sql

referenceUrl=hibernate:spring:com.domain.entity?dialect=org.hibernate.dialect.H2Dialect&amp;hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&amp;hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

diffChangeLogFile=src/main/resources/db/changelog/db.changelog-diff.sql

I wanted change enteties and generate a diff file comparing JPA with dev H2 file.

Upvotes: 0

Views: 84

Answers (0)

Related Questions