org.springframework.beans.factory.BeanCreationException:错误如何解决此问题?

时间:2020-03-17 03:32:04

标签: java spring hibernate spring-boot

我需要一些帮助。我正在将Java与Springboot结合使用,并且正在从事一个项目,该项目实质上将数据库中的信息(书名,作者,语言等)显示到网页上,并且浏览网站使我可以对数据库进行更改例如,编辑条目,创建新条目,显示条目或删除条目。

在我不得不关闭计算机之前,它工作得很好,然后当我返回并尝试再次运行该项目时,它给了我下面的错误以及许多其他文字。我重新启动服务器,在调试模式下运行它,似乎没有任何作用。好像我断开了以前存在的某种连接,或者我删除了本不应该删除的内容。我只是不知道这可能是什么。我希望有人能告诉我我做错了什么,以便我可以扭转它,使其重新运行。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
[2m2020-03-16 23:06:05.766[0;39m [31mERROR[0;39m [35m49106[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36mo.s.boot.SpringApplication              [0;39m [2m:[0;39m 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]

请注意,我没有直接学习“休眠”,只有在看到此错误并尝试使用Googling寻求答案时才听说此词。我为有类似问题的人尝试了stackoverflow上提到的其他一些解决方案,但对我来说不起作用(即,添加了有关休眠的特定依赖项,但我现在还不记得它的详细信息。我的头)。

以下是我用于各种程序包的一些代码:

属性

spring.datasource.url=jdbc:mysql://localhost:3306/book-schema2 
spring.datasource.username=root 
spring.datasource.password=root 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.jpa.hibernate.ddl-auto=update 
spring.mvc.view.prefix=/WEB-INF/

在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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.blank.mvc2</groupId>
    <artifactId>mvc2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mvc2</name>
    <description>mvc2</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

在模型包中: 导入java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;

import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Table(name="books2")
public class Book {

在存储库包中:

import java.util.List;
import java.util.Optional;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends CrudRepository<Book, Long> {

在“服务”包中:

import java.util.List;
import java.util.Optional;

import org.springframework.stereotype.Service;

@Service
public class BookService {

在控制器包中:

import java.util.List;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class BooksController {

请记住,我已经做过这个项目,并且正在再次进行练习,并且两个项目以前都起作用,但是现在这两个项目都没有起作用。直到我重新启动计算机(在此期间计算机本身没有更新)之前,它都工作正常。如果您需要更多信息,请告诉我。我现在只需要帮助弄清楚这一点,因为对我来说为什么一分钟内无法正常工作,然后仅打开/关闭计算机电源在下一分钟内就无法正常工作。

1 个答案:

答案 0 :(得分:0)

好吧,所以什么也没用,在网上进行了更多研究之后,我找到了一个解决方案,但不知道如何实现它,甚至不起作用。果然,我找到了一个YouTube视频(https://www.youtube.com/watch?v=nO0IaGrlGPc),他在其中逐步解释了该视频以及如何解决该视频。

TLDR:我最初在属性中有spring.datasource.url=jdbc:mysql://localhost:3306/book-schema,但遇到了一些错误,其中之一是EDT未被识别为时区。这似乎是导致其他错误的原因。

所以我现在拥有的属性是:

spring.datasource.url=jdbc:mysql://localhost:3306/book-schema?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

该程序现在可以像以前一样工作。 (我认为也许3月8日的夏令时可能起到了作用?我不知道,但是它运行良好,然后突然说它不能识别EDT。)

谢谢所有试图帮助我解决这个问题的人。