Hibernate automatically creates a federated index before creating a table, resulting in index creation failure

  Kiến thức lập trình

Our system uses hibernate to automatically create tables and indexes during startup, but I found that on the first startup, federated indexes cannot be created because there are no tables. I looked at the logs and found that hibernate attempted to create a federated index before creating a table in a single threaded situation.
Here are some logs that I have selected.
I hope you’ve enjoyed a good day.

2024-04-18 14:06:14,283 DEBUG org.hibernate.SQL [localhost-startStop-1] create index IDX_AM_INTEL_USERID_FORECASTTYPE_CREATETIME on
            am_intel_forecast_feature(user_id,create_time)
2024-04-18 14:06:14,284 ERROR druid.sql.Statement [localhost-startStop-1] {conn-10001, stmt-20001} execute error. create index IDX_AM_INTEL_USERID_FORECASTTYPE_CREATETIME on
            am_intel_forecast_feature(user_id,create_time)
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dkey_am.am_intel_forecast_feature' doesn't exist
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_371]
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_371]
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_371]
   at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_371]
   at com.mysql.jdbc.Util.handleNewInstance(Util.java:403) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.Util.getInstance(Util.java:386) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2439) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:829) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:729) ~[mysql-connector-java-5.1.49.jar:5.1.49]
   at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:3010) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.filter.FilterAdapter.statement_execute(FilterAdapter.java:2484) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.filter.FilterEventAdapter.statement_execute(FilterEventAdapter.java:188) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:3008) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.filter.FilterAdapter.statement_execute(FilterAdapter.java:2484) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.filter.FilterEventAdapter.statement_execute(FilterEventAdapter.java:188) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:3008) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.proxy.jdbc.StatementProxyImpl.execute(StatementProxyImpl.java:147) ~[druid-1.2.8.jar:1.2.8]
   at com.alibaba.druid.pool.DruidPooledStatement.execute(DruidPooledStatement.java:644) ~[druid-1.2.8.jar:1.2.8]
   at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:581) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:526) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:197) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:123) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:196) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:335) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:728) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:746) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final]
   at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:511) ~[spring-orm-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:495) ~[spring-orm-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at com.ndkey.am.common.DatabaseSessionFactoryBean.afterPropertiesSet(DatabaseSessionFactoryBean.java:45) ~[classes/:?]
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1677) ~[spring-beans-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1615) ~[spring-beans-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:737) ~[spring-beans-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443) ~[spring-web-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325) ~[spring-web-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) ~[spring-web-4.3.30.RELEASE.jar:4.3.30.RELEASE]
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4492) ~[catalina.jar:8.5.89]
   at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4950) ~[catalina.jar:8.5.89]
   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[catalina.jar:8.5.89]
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:711) ~[catalina.jar:8.5.89]
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:688) ~[catalina.jar:8.5.89]
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:661) ~[catalina.jar:8.5.89]
   at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:673) ~[catalina.jar:8.5.89]
   at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1881) ~[catalina.jar:8.5.89]
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_371]
   at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_371]
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_371]
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_371]
   at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_371]
2024-04-18 14:06:14,294 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_control_list (id varchar(255) not null, tenant_id varchar(255), name varchar(255), description varchar(255), primary key (id)) engine=InnoDB
2024-04-18 14:06:14,317 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_control_list_item (id varchar(255) not null, acl_id varchar(255), acl_index integer, content varchar(255), primary key (id)) engine=InnoDB
2024-04-18 14:06:14,330 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_point (id varchar(255) not null, concurrency_version integer, location varchar(255), mac_address varchar(255), access_server_id varchar(255), parent_group_id varchar(255), primary key (id)) engine=InnoDB
2024-04-18 14:06:14,344 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_point_group (id varchar(255) not null, concurrency_version integer, access_server_id varchar(255), parent_group_id varchar(255), location varchar(255), access_realm_id varchar(255), tenant_id varchar(255), audit_gateway_id tinyblob, ace_integration_id varchar(255), primary key (id)) engine=InnoDB
2024-04-18 14:06:14,356 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_realm (id varchar(255) not null, type integer not null, concurrency_version integer, name varchar(255), tenant_id varchar(255), check_user_state_before_auth bit, multi_attribute_login_enabled bit, sign_on_by_mobile_enabled bit, sign_on_by_number_enabled bit, sign_on_by_email_enabled bit, default_portal_type varchar(255), disclaimers longtext, disclaimer_accepted_by_default bit, primary key (id)) engine=InnoDB
2024-04-18 14:06:14,369 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_realm_attached_identity_store (access_realm_id varchar(255) not null, priority integer, identity_store_id varchar(255)) engine=InnoDB
2024-04-18 14:06:14,383 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_server (id varchar(255) not null, access_server_type integer not null, concurrency_version integer, host_address varchar(255), owner_type integer, owner_id varchar(255), t_name varchar(255), using_tenant_id varchar(255), parent_group_id varchar(255), encrypted_shared_secret varchar(255), access_realm_id varchar(255), device_type integer, device_brand integer, create_time datetime, encoded_device_specific_configs longtext, audit_gateway_id tinyblob, ace_integration_id varchar(255), long_start_host_address bigint, long_end_host_address bigint, big_start_host_address6 decimal(38,0), big_end_host_address6 decimal(38,0), string_start_host_address6 varchar(255), string_end_host_address6 varchar(255), description longtext, record_orphan_accounting_enabled bit, primary key (id)) engine=InnoDB
2024-04-18 14:06:14,398 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_access_access_server_additional_host_address (access_server_id varchar(255) not null, address varchar(255)) engine=InnoDB
2024-04-18 14:06:16,025 DEBUG org.hibernate.SQL [localhost-startStop-1] create table am_intel_forecast_feature (id varchar(255) not null, config_type integer not null, user_id varchar(255), create_time_in_millis bigint, login_counts_in_day integer, last_login_time bigint, latitude double precision, longitude double precision, login_frequency double precision, primary key (id)) engine=InnoDB

This is my xxx.hbm.xml format

I hope to automatically create a federated index

New contributor

user24460824 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

LEAVE A COMMENT