为什么 spring 启动应用程序不启动?

Why doesn't spring boot application launch?

我的初始程序旨在将数据插入我的数据库。我有 4 个表,其中插入了数据,为了优化,我在一个单独的线程中执行此操作,因为实体是异步创建的。我正在使用 consume 方法将实体添加到队列中。

package main.database;

import org.hibernate.Session;
import main.utilities.LogUtil;

import java.util.Queue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;

public class EntityManager {
    static final int BUFFER = 10000;
    static Queue<Object> queue = new LinkedBlockingQueue<>();
    static ExecutorService executor;

    public static void open() {
        LogUtil.logger.info("EntityManager::open started.");
        executor = Executors.newSingleThreadExecutor();
        executor.execute(EntityManager::save);
        LogUtil.logger.info("EntityManager::open ended.");
    }

    public static void consume(Object entity) {
        LogUtil.logger.trace("EntityManager::consume added entity [%s] to queue.".formatted(entity.getClass()));
        queue.add(entity);
    }

    private static void save() {
        LogUtil.logger.info("EntityManager::save opening session.");
        Session session = Hibernate.createSession();
        while (!executor.isShutdown()) {
            int count = queue.size();
            if (count < BUFFER) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    LogUtil.logger.fatal(e);
                }
            } else {
                LogUtil.logger.info("EntityManager::save begin transaction");
                session.beginTransaction();
                for (int i = 0; i < BUFFER; i++) {
                    Object entity = queue.poll();
                    LogUtil.logger.trace("EntityManager::save: saving [%s]".formatted(entity.getClass().getSimpleName()));
                    session.saveOrUpdate(entity);
                }
                LogUtil.logger.info("EntityManager::save commit transaction");
                session.getTransaction().commit();
            }
        }
        LogUtil.logger.info("EntityManager::save closing session.");
        LogUtil.logger.info("EntityManager::save begin last transaction");
        int remainingCount = queue.size();
        session.beginTransaction();
        for (int i = 0; i < remainingCount; i++) {
            Object entity = queue.poll();
            LogUtil.logger.trace("EntityManager::save: saving [%s]".formatted(entity.getClass().getSimpleName()));
            session.saveOrUpdate(entity);
        }
        LogUtil.logger.info("EntityManager::save commit last transaction");
        session.getTransaction().commit();
        session.close();
    }

    public static void close() {
        LogUtil.logger.info("EntityManager::close started.");
        LogUtil.logger.info("EntityManager::close executor.shutdown()");
        executor.shutdown();
        while (queue.size() > 0) {
            Thread.onSpinWait();
        }
        try {
            boolean isTerminated = executor.awaitTermination(1, TimeUnit.MINUTES);
            if (!isTerminated) {
                LogUtil.logger.error("ThreadPoolExecutor termination timeout. Fix your bug.");
                System.exit(3);
            }
            LogUtil.logger.info("EntityManager::close executor is terminated.");
        } catch (InterruptedException e) {
            LogUtil.logger.fatal("", e);
        }
        LogUtil.logger.info("EntityManager::close ended.");
    }

}

一段时间后,我决定使用 Spring Boot 将 web api 添加到我的应用程序中。 Spring 需要数据 JPA,因为一些 POST 请求将数据插入我的数据库。但是 Spring Data JPA 与我已经在使用的 Hibernate 依赖项发生冲突。

这是我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>landsreyk</groupId>
    <artifactId>search-engine</artifactId>
    <version>4</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.6.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.6.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.14.3</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.6.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.14.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.14.1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-validator</groupId>
            <artifactId>commons-validator</artifactId>
            <version>1.7</version>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>


</project>

还有我的休眠配置文件'hibernate.cfg.xml'

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/search_engine?useSSL=false</property>
        <property name="connection.username">landsreyk</property>
        <property name="connection.password">12345678</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">20</property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">false</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>
        <!-- Names the annotated entity class -->
        <mapping class="model.Page"/>
        <mapping class="model.Field"/>
        <mapping class="model.Word"/>
        <mapping class="model.Index"/>
    </session-factory>

</hibernate-configuration>

我还有spring配置文件application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/search-engine
    username: landsreyk
    password: 12345678
  jpa:
    hibernate:
      ddl-auto: none
sites:
  - url: http://www.playback.ru
    name: PlayBack.ru
  - url: https://www.lenta.ru
    name: Лента.ру
  - url: https://www.skillbox.ru
    name: Skillbox
user-agent: LandsreykSearchBot/1.0 (+http://www.google.com/bot.html)
referrer: http://www.google.com
web-interface: /admin

所以,我添加了一个简单的控制器DefaultContoller.java

package main.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

@RestController
public class DefaultController
{
  @RequestMapping(value = "/")
  public String index()
  {
    return LocalDateTime.now().toString();
  }
}

我的主要 class 是:

package main;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

}

但是tomcat不会启动,因为休眠有一些麻烦的问题,我不太明白。

C:\Users\HP\.jdks\openjdk-17.0.1\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.3\lib\idea_rt.jar=61862:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.3\bin" -Dfile.encoding=UTF-8 -classpath E:\java\skillbox\java_basics\FinalProject\search-engine\target\classes;E:\java\skillbox\java_basics\FinalProject\search-engine\lib\word-processor.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-starter-web.6.0\spring-boot-starter-web-2.6.0.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-starter.6.0\spring-boot-starter-2.6.0.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot.6.0\spring-boot-2.6.0.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-autoconfigure.6.0\spring-boot-autoconfigure-2.6.0.jar;C:\Users\HP\.m2\repository\jakarta\annotation\jakarta.annotation-api.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\HP\.m2\repository\org\springframework\spring-core.3.13\spring-core-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\spring-jcl.3.13\spring-jcl-5.3.13.jar;C:\Users\HP\.m2\repository\org\yaml\snakeyaml.29\snakeyaml-1.29.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-starter-json.6.0\spring-boot-starter-json-2.6.0.jar;C:\Users\HP\.m2\repository\com\fasterxml\jackson\core\jackson-databind.13.0\jackson-databind-2.13.0.jar;C:\Users\HP\.m2\repository\com\fasterxml\jackson\core\jackson-annotations.13.0\jackson-annotations-2.13.0.jar;C:\Users\HP\.m2\repository\com\fasterxml\jackson\core\jackson-core.13.0\jackson-core-2.13.0.jar;C:\Users\HP\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8.13.0\jackson-datatype-jdk8-2.13.0.jar;C:\Users\HP\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310.13.0\jackson-datatype-jsr310-2.13.0.jar;C:\Users\HP\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names.13.0\jackson-module-parameter-names-2.13.0.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat.6.0\spring-boot-starter-tomcat-2.6.0.jar;C:\Users\HP\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core.0.55\tomcat-embed-core-9.0.55.jar;C:\Users\HP\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el.0.55\tomcat-embed-el-9.0.55.jar;C:\Users\HP\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket.0.55\tomcat-embed-websocket-9.0.55.jar;C:\Users\HP\.m2\repository\org\springframework\spring-web.3.13\spring-web-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\spring-beans.3.13\spring-beans-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\spring-webmvc.3.13\spring-webmvc-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\spring-aop.3.13\spring-aop-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\spring-context.3.13\spring-context-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\spring-expression.3.13\spring-expression-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa.6.0\spring-boot-starter-data-jpa-2.6.0.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-starter-aop.6.0\spring-boot-starter-aop-2.6.0.jar;C:\Users\HP\.m2\repository\org\aspectj\aspectjweaver.9.7\aspectjweaver-1.9.7.jar;C:\Users\HP\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc.6.0\spring-boot-starter-jdbc-2.6.0.jar;C:\Users\HP\.m2\repository\com\zaxxer\HikariCP.0.3\HikariCP-4.0.3.jar;C:\Users\HP\.m2\repository\org\springframework\spring-jdbc.3.13\spring-jdbc-5.3.13.jar;C:\Users\HP\.m2\repository\jakarta\transaction\jakarta.transaction-api.3.3\jakarta.transaction-api-1.3.3.jar;C:\Users\HP\.m2\repository\jakarta\persistence\jakarta.persistence-api.2.3\jakarta.persistence-api-2.2.3.jar;C:\Users\HP\.m2\repository\org\springframework\data\spring-data-jpa.6.0\spring-data-jpa-2.6.0.jar;C:\Users\HP\.m2\repository\org\springframework\data\spring-data-commons.6.0\spring-data-commons-2.6.0.jar;C:\Users\HP\.m2\repository\org\springframework\spring-orm.3.13\spring-orm-5.3.13.jar;C:\Users\HP\.m2\repository\org\springframework\spring-tx.3.13\spring-tx-5.3.13.jar;C:\Users\HP\.m2\repository\org\slf4j\slf4j-api.7.32\slf4j-api-1.7.32.jar;C:\Users\HP\.m2\repository\org\springframework\spring-aspects.3.13\spring-aspects-5.3.13.jar;C:\Users\HP\.m2\repository\org\jsoup\jsoup.14.3\jsoup-1.14.3.jar;C:\Users\HP\.m2\repository\org\projectlombok\lombok.18.22\lombok-1.18.22.jar;C:\Users\HP\.m2\repository\mysql\mysql-connector-java.0.25\mysql-connector-java-8.0.25.jar;C:\Users\HP\.m2\repository\com\google\protobuf\protobuf-java.11.4\protobuf-java-3.11.4.jar;C:\Users\HP\.m2\repository\org\hibernate\hibernate-core.6.1.Final\hibernate-core-5.6.1.Final.jar;C:\Users\HP\.m2\repository\org\jboss\logging\jboss-logging.4.2.Final\jboss-logging-3.4.2.Final.jar;C:\Users\HP\.m2\repository\javax\persistence\javax.persistence-api.2\javax.persistence-api-2.2.jar;C:\Users\HP\.m2\repository\net\bytebuddy\byte-buddy.11.20\byte-buddy-1.11.20.jar;C:\Users\HP\.m2\repository\antlr\antlr.7.7\antlr-2.7.7.jar;C:\Users\HP\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec.1.1.Final\jboss-transaction-api_1.2_spec-1.1.1.Final.jar;C:\Users\HP\.m2\repository\org\jboss\jandex.2.3.Final\jandex-2.2.3.Final.jar;C:\Users\HP\.m2\repository\com\fasterxml\classmate.5.1\classmate-1.5.1.jar;C:\Users\HP\.m2\repository\javax\activation\javax.activation-api.2.0\javax.activation-api-1.2.0.jar;C:\Users\HP\.m2\repository\org\hibernate\common\hibernate-commons-annotations.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\HP\.m2\repository\javax\xml\bind\jaxb-api.3.1\jaxb-api-2.3.1.jar;C:\Users\HP\.m2\repository\org\glassfish\jaxb\jaxb-runtime.3.1\jaxb-runtime-2.3.1.jar;C:\Users\HP\.m2\repository\org\glassfish\jaxb\txw2.3.1\txw2-2.3.1.jar;C:\Users\HP\.m2\repository\com\sun\istack\istack-commons-runtime.0.7\istack-commons-runtime-3.0.7.jar;C:\Users\HP\.m2\repository\org\jvnet\staxex\stax-ex.8\stax-ex-1.8.jar;C:\Users\HP\.m2\repository\com\sun\xml\fastinfoset\FastInfoset.2.15\FastInfoset-1.2.15.jar;C:\Users\HP\.m2\repository\org\apache\logging\log4j\log4j-core.14.1\log4j-core-2.14.1.jar;C:\Users\HP\.m2\repository\org\apache\logging\log4j\log4j-api.14.1\log4j-api-2.14.1.jar;C:\Users\HP\.m2\repository\commons-validator\commons-validator.7\commons-validator-1.7.jar;C:\Users\HP\.m2\repository\commons-beanutils\commons-beanutils.9.4\commons-beanutils-1.9.4.jar;C:\Users\HP\.m2\repository\commons-digester\commons-digester.1\commons-digester-2.1.jar;C:\Users\HP\.m2\repository\commons-logging\commons-logging.2\commons-logging-1.2.jar;C:\Users\HP\.m2\repository\commons-collections\commons-collections.2.2\commons-collections-3.2.2.jar main.Main

  .   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.6.0)

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.
нояб. 27, 2021 9:49:04 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
нояб. 27, 2021 9:49:04 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
нояб. 27, 2021 9:49:04 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.55]
нояб. 27, 2021 9:49:04 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring embedded WebApplicationContext
09:49:06.549 [main] ERROR - Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
нояб. 27, 2021 9:49:06 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Tomcat]
09:49:06.597 [main] ERROR - Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean[=17=](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.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290)
    at main.Main.main(Main.java:10)
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:178)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:175)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1460)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1494)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
    ... 16 more
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100)
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:138)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
    ... 33 more


Process finished with exit code 1

我的项目结构如下:

为什么会出现这个错误?是因为我用的是Hibernate.Session吗?

此解决方案由 Geno Chen 建议。 我关注了linkorg.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

事实证明,当使用 spring 引导配置文件时,不需要休眠配置,即 hibernate.cfg.xml。 我还编辑了 application.yml spring 配置文件。这是我添加的

database-platform: org.hibernate.dialect.MySQLDialect
show-sql: false

所以现在看起来像:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/search-engine
    username: landsreyk
    password: 12345678
  jpa:
    database-platform: org.hibernate.dialect.MySQLDialect
    show-sql: false
    hibernate:
      ddl-auto: none
sites:
  - url: http://www.playback.ru
    name: PlayBack.ru
  - url: https://www.lenta.ru
    name: Лента.ру
  - url: https://www.skillbox.ru
    name: Skillbox
user-agent: LandsreykSearchBot/1.0 (+http://www.google.com/bot.html)
referrer: http://www.google.com
web-interface: /admin

现在我的网络应用程序启动时没有错误,初始页面显示在 localhost:8080 Apache Tomcat 放置它的位置。