Error creating bean with name liquibase defined in class path resource

Environment

Liquibase Version: 4.4.3

Liquibase Integration & Version: <Pick one: CLI, maven, gradle, spring boot, servlet, etc.> spring-boot

Liquibase Extension(s) & Version:

Database Vendor & Version: postgresql 10.12

Operating System Type & Version:

Description

Just upgraded liquibase to 4.4.3 from 3.10.3. The migrations are failing because one of postgres’ JSON operators is incorrectly parsed by liquibase.

Steps To Reproduce

The migration query is similar to the following:

UPDATE table SET json_column = some_other_json_value WHERE json_column IS NOT NULL AND json_column::jsonb ? 'updateUserName'

Notice the ‘?’ operator (question mark - valid JSON operator for postgres) where the database claims it has received slightly different query (checked postgres logs using “log_statement=all” runtime option - notice the changed operator ‘?’ into ‘$1’)

UPDATE table SET json_column = some_other_json_value WHERE json_column IS NOT NULL AND json_column::jsonb $1 'updateUserName'

Actual Behavior

The migration fails with an error:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [com/lmig/forge/liquibase/CustomLiquibaseAutoConfiguration.class]: Invocation of init method failed; nested exception is liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set <redacted>: Reason: liquibase.exception.DatabaseException: ERROR: syntax error at or near "$1"

Expected/Desired Behavior

This was a perfectly valid migration in 3.10.3, I expect it to be fixed.

Additional Context

The changeset is defined using sqlFile in the yml configuration:

- changeSet: id: <redacted> author: <redacted> context: prod changes: - sqlFile: path: <redacted> relativeToChangelogFile: true splitStatements: false

For me it seems like the operator is accidentally treated as a prepared statement parameter, isn’t it?

После первого запуска работает норм, потом падает (после первого всмысле удалть все таблицы из бд и создать их заново)

Использую spring jpa 2.4.5 + liquibase 3.4.1

Полный стек трейс:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [com/coherentsolutions/nastyabakhshieva/config/jpa/DataJpaConfig.class]: Invocation of init method failed; nested exception is java.lang.ClassCastException: java.base/java.time.LocalDateTime cannot be cast to java.base/java.lang.String at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:582) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4714) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5177) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706) at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1727) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:288) at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809) at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:459) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:408) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:288) at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809) at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at java.management/com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:75) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1406) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:827) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:567) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:800) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:682) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.base/java.lang.Thread.run(Thread.java:844) Caused by: java.lang.ClassCastException: java.base/java.time.LocalDateTime cannot be cast to java.base/java.lang.String at liquibase.changelog.StandardChangeLogHistoryService.getRanChangeSets(StandardChangeLogHistoryService.java:253) at liquibase.changelog.AbstractChangeLogHistoryService.upgradeChecksums(AbstractChangeLogHistoryService.java:63) at liquibase.changelog.StandardChangeLogHistoryService.upgradeChecksums(StandardChangeLogHistoryService.java:224) at liquibase.Liquibase.checkLiquibaseTables(Liquibase.java:1076) at liquibase.Liquibase.update(Liquibase.java:203) at liquibase.Liquibase.update(Liquibase.java:190) at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:434) at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:391) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ... 59 more ===================================================== 17-Mar-2021 16:13:29.858 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.41 17-Mar-2021 16:13:29.859 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Dec 3 2020 11:43:00 UTC 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.41.0 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 10 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 10.0 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: C:\Program Files\Java\jdk-9.0.4 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 9.0.4+11 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\nastyabakhshieva\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\19574d3a-3da5-4a96-b76d-2045b5ab354e 17-Mar-2021 16:13:29.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\Tomcat 9.0 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\Users\nastyabakhshieva\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\19574d3a-3da5-4a96-b76d-2045b5ab354e\conf\logging.properties 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote= 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.password.file=C:\Users\nastyabakhshieva\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\19574d3a-3da5-4a96-b76d-2045b5ab354e\jmxremote.password 17-Mar-2021 16:13:29.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.access.file=C:\Users\nastyabakhshieva\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\19574d3a-3da5-4a96-b76d-2045b5ab354e\jmxremote.access 17-Mar-2021 16:13:29.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1 17-Mar-2021 16:13:29.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 17-Mar-2021 16:13:29.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 17-Mar-2021 16:13:29.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs= 17-Mar-2021 16:13:29.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\Users\nastyabakhshieva\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\19574d3a-3da5-4a96-b76d-2045b5ab354e 17-Mar-2021 16:13:29.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 9.0 17-Mar-2021 16:13:29.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp 17-Mar-2021 16:13:29.867 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [C:\Program Files\Java\jdk-9.0.4\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\nastyabakhshieva\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\IntelliJ IDEA 2020.3.1\bin;C:\Program Files\Java\jdk1.8.0_281\bin;C:\Program Files\Maven\bin;C:\Users\nastyabakhshieva\AppData\Local\atom\bin;.] 17-Mar-2021 16:13:29.988 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"] 17-Mar-2021 16:13:30.012 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [260] milliseconds 17-Mar-2021 16:13:30.040 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina] 17-Mar-2021 16:13:30.040 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.41] 17-Mar-2021 16:13:30.046 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 17-Mar-2021 16:13:30.051 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [38] milliseconds Connected to server [2021-03-17 04:13:30,410] Artifact web-application:war exploded: Artifact is being deployed, please wait... 17-Mar-2021 16:13:32.397 INFO [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 17-Mar-2021 16:13:33.454 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.jpa.internal.util.LogHelper.logPersistenceUnitInformation HHH000204: Processing PersistenceUnitInfo [name: default] 17-Mar-2021 16:13:33.544 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.Version.logVersion HHH000412: Hibernate ORM core version 5.4.28.Final 17-Mar-2021 16:13:33.777 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.annotations.common.reflection.java.JavaReflectionManager.<clinit> HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 17-Mar-2021 16:13:34.255 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.dialect.Dialect.<init> HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect 17-Mar-2021 16:13:34.659 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.validator.internal.util.Version.<clinit> HV000001: Hibernate Validator 6.0.16.Final 17-Mar-2021 16:13:35.368 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator.initiateService HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] INFO 3/17/21, 4:13 PM: liquibase: Successfully acquired change log lock INFO 3/17/21, 4:13 PM: liquibase: Reading from java_spring.DATABASECHANGELOG INFO 3/17/21, 4:13 PM: liquibase: Successfully released change log lock 17-Mar-2021 16:13:37.256 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file 17-Mar-2021 16:13:37.290 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors 17-Mar-2021 16:13:37.301 WARNING [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.mysql.cj.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. [2021-03-17 04:13:37,308] Artifact web-application:war exploded: Error during artifact deployment. See server log for details. 17-Mar-2021 16:13:40.053 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\manager] 17-Mar-2021 16:13:40.091 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\manager] has finished in [38] ms 17-Mar-2021 16:13:40.497 INFO [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access. java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access. at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1385) at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1038) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.base/java.lang.Thread.run(Thread.java:844) "C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\catalina.bat" stop Using CATALINA_BASE: "C:\Users\nastyabakhshieva\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\19574d3a-3da5-4a96-b76d-2045b5ab354e" Using CATALINA_HOME: "C:\Program Files\Apache Software Foundation\Tomcat 9.0" Using CATALINA_TMPDIR: "C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp" Using JRE_HOME: "C:\Program Files\Java\jdk-9.0.4" Using CLASSPATH: "C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\bootstrap.jar;C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\tomcat-juli.jar" Using CATALINA_OPTS: "" 17-Mar-2021 16:15:17.436 SEVERE [main] org.apache.catalina.startup.Catalina.stopServer No shutdown port configured. Shut down server through OS signal. Server not shut down. Disconnected from server

changelog:

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd"> <changeSet id="1.0.0" author="nastya.bakhshieva"> <sql> create table users( user_id bigint not null auto_increment, first_name varchar(100) not null, last_name varchar(100) not null, status varchar(30) not null default 'ACTIVE', role varchar(30) not null default 'ROLE_USER', username varchar(200) not null unique, password varchar(200) not null, constraint pk_user_user_id primary key(user_id) ); </sql> <rollback> drop table if exists users; </rollback> </changeSet> </databaseChangeLog>

Entity:

import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; @Entity @Table(name = "users") @Data @NoArgsConstructor public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") private Long id; @Column(name = "username") private String username; @Column(name = "first_name") private String firstName; @Column(name = "last_name") private String lastName; @Column(name = "password") private String password; @Enumerated(value = EnumType.STRING) @Column(name = "status") private Status status; @Enumerated(value = EnumType.STRING) @Column(name = "role") private Role role; }

db.properties:

spring.data.driver-classname=com.mysql.jdbc.Driver spring.data.url=jdbc:mysql://localhost:3306/java_spring?serverTimezone=UTC spring.data.username=root spring.data.password=root

config:

@Configuration @EnableTransactionManagement @EnableJpaRepositories("com.example.repositories") @PropertySource("classpath:database.properties") public class DataJpaConfig { @Value("${spring.data.driver-classname}") private String driver; @Value("${spring.data.url}") private String url; @Value("${spring.data.username}") private String username; @Value("${spring.data.password}") private String password; @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(driver); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } @Bean public SpringLiquibase liquibase() { SpringLiquibase liquibase = new SpringLiquibase(); liquibase.setChangeLog("classpath:liquibase/db.changelog-master.xml"); liquibase.setDataSource(dataSource()); return liquibase; } @Bean public EntityManagerFactory entityManagerFactory() { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setShowSql(false); vendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQL8Dialect"); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("com.coherentsolutions.nastyabakhshieva"); factory.setDataSource(dataSource()); factory.afterPropertiesSet(); return factory.getObject(); } @Bean public JpaTransactionManager transactionManager() { JpaTransactionManager txManager = new JpaTransactionManager(); txManager.setDataSource(dataSource()); txManager.setEntityManagerFactory(entityManagerFactory()); return txManager; } }

liquibase:

Error creating bean with name liquibase defined in class path resource

Error creating bean with name liquibase defined in class path resource

Error creating bean with name liquibase defined in class path resource

Я не могу представить, судя по ошибке, какую дату он пытается сконвертить в строку - ведь никаких дат в моих энтити нету. В чем может быть проблема?

Еще что примечательно, так это то, что когда я создавала юзеров с ролями связью многие-ко-многим(тоесть требовалось три таблицы вместо одной: юзеры, роли, и связующая) - все работало корректно, и после первого запуска, и последующие, все что изменилось у юзера - появилось поле role, а остальные таблицы удалены

Скажите если кто знает, пожалуйста

Источник: https://ru.stackoverflow.com/questions/1257125/error-creating-bean-with-name-liquibase-java-lang-classcastexception-java-bas