Java 无法使用Spring Boot在MySQL数据库中自动创建表

Java 无法使用Spring Boot在MySQL数据库中自动创建表,java,mysql,spring,spring-boot,hibernate,Java,Mysql,Spring,Spring Boot,Hibernate,我是Spring Boot新手,尝试从MySQL数据库中的实体创建表,但不幸的是,在运行我的应用程序后没有创建任何表。这是我的密码: User.java @Entity public class User { @Id @GeneratedValue private Long id; private String firstName; private String lastName; @Column(unique = true, nullabl

我是Spring Boot新手,尝试从MySQL数据库中的实体创建表,但不幸的是,在运行我的应用程序后没有创建任何表。这是我的密码:

User.java

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    private String firstName;

    private String lastName;

    @Column(unique = true, nullable = false)
    private String username;

    @Column(nullable = false)
    private String password;

    private String prevPass;

    @Column(nullable = false)
    private Organization organization;

    @ManyToMany
    @Column(nullable = false)
    private Set<Role> roles = new HashSet<>();

    @Column(nullable = false)
    private Boolean enabled = true;

    @Column(nullable = false, unique = true)
    private String email;

    private String position;

    public User() {
    }
}
@Entity
public class Role {
    @Id
    @GeneratedValue
    private Long id;

    @Column(unique = true, nullable = false)
    private String code;

    @Column(unique = true, nullable = false)
    private String title;
}
应用程序属性

spring.datasource.url= jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=sth
spring.jpa.hibernate.ddl-auto=update
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <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>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</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>
    </dependencies>

pom.xml依赖关系

spring.datasource.url= jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=sth
spring.jpa.hibernate.ddl-auto=update
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <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>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</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>
    </dependencies>

在my application.properties文件中。我必须提到,我的实体与包含@SpringBootApplication注释的类位于同一个包中。 以下是日志:

2020-08-10 22:52:14.139  INFO 10011 --- [           main] a.b.c.abc          : Starting abc on user with PID 10011 
2020-08-10 22:52:14.139  INFO 10011 --- [           main] a.b.c.abc          : No active profile set, falling back to default profiles: default
2020-08-10 22:52:15.339  INFO 10011 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFERRED mode.
2020-08-10 22:52:15.370  INFO 10011 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 23ms. Found 0 JPA repository interfaces.
2020-08-10 22:52:16.292  INFO 10011 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-08-10 22:52:16.307  INFO 10011 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-08-10 22:52:16.307  INFO 10011 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.37]
2020-08-10 22:52:16.495  INFO 10011 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-08-10 22:52:16.495  INFO 10011 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2180 ms
2020-08-10 22:52:16.886  INFO 10011 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-08-10 22:52:16.948  INFO 10011 --- [         task-1] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-08-10 22:52:17.011  WARN 10011 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2020-08-10 22:52:17.042  INFO 10011 --- [         task-1] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.18.Final
2020-08-10 22:52:17.378  INFO 10011 --- [         task-1] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-08-10 22:52:17.724  INFO 10011 --- [         task-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-08-10 22:52:18.251  INFO 10011 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-08-10 22:52:18.258  INFO 10011 --- [           main] DeferredRepositoryInitializationListener : Triggering deferred initialization of Spring Data repositories…
2020-08-10 22:52:18.259  INFO 10011 --- [           main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!
2020-08-10 22:52:18.299  INFO 10011 --- [           main] a.b.c.abc          : Started abc in 4.794 seconds (JVM running for 9.263)
2020-08-10 22:52:18.786  INFO 10011 --- [         task-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2020-08-10 22:52:18.817  INFO 10011 --- [         task-1] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect

有人能帮我吗?

做以下事情可能会有帮助:

  • 正在运行的类应具有
    @springbootplication
    或至少一个 您的配置类应具有
    @EnableAutoConfiguration
    越过它
  • 您不需要tomcat作为依赖项
  • 你能更新你的pom文件来向我们展示Spring启动的父级吗

  • 我终于解决了。无法创建表,因为我没有对外键使用一对一关系。

    能否显示日志。启动项目时,能否提供更多详细信息,如日志或发生的任何运行时异常。使用
    spring.jpa.properties.hibernate.dialent=org.hibernate.dialent.mysql8dialent
    (如果使用springboot 2.x)否则请使用-
    spring.jpa.properties.hibernate.dialogue=org.hibernate.dialogue.mysql55dialogue
    @Hamza我刚刚添加了。@AjayKumar不幸地不起作用。这个答案应该有效。和spring.jpa.hibernate.ddl auto=update,works 2刚刚好我已经在run类中使用了
    @SpringBootApplication
    。我已经更新了上面的pom.xml。谢谢你的帮助。