Spring boot不会自动在Mysql上创建数据库表

问题描述 投票:0回答:5

首先我已经研究了堆栈上的一些解决方案,但它们不起作用。我在 spring / mysql 上制作了一个非常基本/学习的应用程序,目前没有表加入。问题是表没有在 mysql 上创建,而一切正常。我在下面复制我的代码。 预先感谢您的帮助

控制台:

 2021-06-15 11:25:07.895  INFO 8464 --- [           main] 
 c.j.v.VotingsystemApplication            : Starting 
 VotingsystemApplication using Java 15.0.2 on LAPTOP-BQ48GM36 with PID 
 8464 (C:\Users\The Kash\Downloads\votingsystem\target\classes started 
 by The Kash in C:\Users\The Kash\Downloads\votingsystem)
 2021-06-15 11:25:07.898  INFO 8464 --- [           main] 
 c.j.v.VotingsystemApplication            : No active profile set, 
 falling back to default profiles: default
 2021-06-15 11:25:08.734  INFO 8464 --- [           main] 
 .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules 
 found, entering strict repository configuration mode!
 2021-06-15 11:25:08.736  INFO 8464 --- [           main] 
 .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data 
 JDBC repositories in DEFAULT mode.
 2021-06-15 11:25:08.749  INFO 8464 --- [           main] .s.d. 
r.c.RepositoryConfigurationDelegate : Finished Spring Data repository 
 scanning in 6 ms. Found 0 JDBC repository interfaces.
 2021-06-15 11:25:08.760  INFO 8464 --- [           main] 
 .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules 
 found, entering strict repository configuration mode!
 2021-06-15 11:25:08.762  INFO 8464 --- [           main] .s.d. 
r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA 
 repositories in DEFAULT mode.
 2021-06-15 11:25:08.769  INFO 8464 --- [           main] 
 .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data 
 repository scanning in 1 ms. Found 0 JPA repository interfaces.
 2021-06-15 11:25:09.628  INFO 8464 --- [           main] 
 o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with 
 port(s): 8080 (http)
 2021-06-15 11:25:09.640  INFO 8464 --- [           main] 
 o.apache.catalina.core.StandardService   : Starting service [Tomcat]
 2021-06-15 11:25:09.640  INFO 8464 --- [           main] 
  org.apache.catalina.core.StandardEngine  : Starting Servlet engine: 
 [Apache Tomcat/9.0.46]
 2021-06-15 11:25:09.776  INFO 8464 --- [           main] o.a.c.c.C. 
 [Tomcat].[localhost].[/]       : Initializing Spring embedded 
 WebApplicationContext
 2021-06-15 11:25:09.776  INFO 8464 --- [           main] 
 w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: 
 initialization completed in 1808 ms
 2021-06-15 11:25:09.924  INFO 8464 --- [           main] 
 com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
 2021-06-15 11:25:10.415  INFO 8464 --- [           main] 
 com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start 
      completed.
 2021-06-15 11:25:10.582  INFO 8464 --- [           main] 
 o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing 
 PersistenceUnitInfo [name: default]
 2021-06-15 11:25:10.672  INFO 8464 --- [           main] 
 org.hibernate.Version                    : HHH000412: Hibernate ORM 
 core version 5.4.32.Final
 2021-06-15 11:25:10.879  INFO 8464 --- [           main] 
 o.hibernate.annotations.common.Version   : HCANN000001: Hibernate 
 Commons Annotations {5.1.2.Final}
 2021-06-15 11:25:11.018  INFO 8464 --- [           main] 
 org.hibernate.dialect.Dialect            : HHH000400: Using dialect: 
 org.hibernate.dialect.MySQL5Dialect
 2021-06-15 11:25:11.260  INFO 8464 --- [           main] 
 o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform 
 implementation: 
 [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
 2021-06-15 11:25:11.272  INFO 8464 --- [           main] 
 j.LocalContainerEntityManagerFactoryBean : Initialized JPA 
 EntityManagerFactory for persistence unit 'default'
2021-06-15 11:25:11.322  WARN 8464 --- [           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
 2021-06-15 11:25:11.735  WARN 8464 --- [           main] 
 ion$DefaultTemplateResolverConfiguration : Cannot find template 
 location: classpath:/templates/ (please add some templates or check 
  your Thymeleaf configuration)
  2021-06-15 11:25:11.999  INFO 8464 --- [           main] o.s.b. 
  w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 
 (http) with context path ''
 2021-06-15 11:25:12.013  INFO 8464 --- [           main] 
  c.j.v.VotingsystemApplication            : Started 
 VotingsystemApplication 
   in 4.595 seconds (JVM running for 5.166)

VotingsystemApplication.java(主应用程序)

 package com.javaenterprise.votingsystem;

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

 @SpringBootApplication
 public class VotingsystemApplication {

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

应用程序.属性

 spring.datasource.url=jdbc:mysql://localhost/VotingSystem
 spring.datasource.username=root
 spring.datasource.password=rooting1
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 spring.jpa.generate-ddl=true
 spring.jpa.hibernate.ddl-auto=create-drop
 spring.jpa.properties.hibernate.dialect = 
 org.hibernate.dialect.MySQL5Dialect

公民.java

 package com.javaenterprise.entity;

 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;

 @Entity
 @Table(name = "citizens")
 public class Citizen {

     @Id
     @Column(name="id")
     private Long id;

     public Long getId() {
     return id;
     }

     public void setId(Long id) {
     this.id = id;
     }

     @Column(name = "citizen_name")
     private String name;

     public String getName() {
     return name;
     }

     public void setName(String name) {
     this.name = name;
     }

     public Citizen(Long id, String name) {
     super();
      this.id = id;
      this.name = name;
     }
    }

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.5.1</version>
    <relativePath/> <!-- lookup parent from repository -->
   </parent>
     <groupId>com.javaenterprise</groupId>
     <artifactId>votingsystem</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>votingsystem</name>
     <description>Voting system in sprin</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

  <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</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.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

   <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
   </build>
  </project>
spring spring-data-jpa
5个回答
4
投票

应用程序的主要入口点位于

com.javaenterprise.votingsystem
包中。这意味着组件和实体扫描将在
com.javaenterprise.votingsystem
及其任何子包中找到类。您的实体位于
com.javaenterprise.entity
中,本次扫描未覆盖该实体。

您可以通过将

com.javaenterprise.entity
包重命名为
com.javaenterprise.votingsystem.entity
来解决该问题。或者,您可以使用
@EntityScan
指定要扫描实体的包。


2
投票

使用以下属性:

spring.datasource.url=jdbc:mysql://localhost:3306/dbname?useSSL=false
spring.datasource.username=root
spring.datasource.password=root


spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update

其次,请添加一个默认构造函数。

所以你的实体类将变成:

package com.javaenterprise.entity;

 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;

 @Entity
 @Table(name = "citizens")
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 public class Citizen {

     @Id
     @Column(name="id")
     private Long id;

     @Column(name = "citizen_name")
     private String name;

 }

1
投票

您可以在 application.properties 文件中使用它

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root/your username
spring.datasource.password= yourpassword
spring.datasource.url=jdbc:mysql://localhost:3306/kibria

#for mysql dialect
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql = true

0
投票

你可以尝试实现 Serialized 并添加 DEFAULT 构造函数吗?


0
投票

我面临着同样的问题,所以对我来说这很有效:

com.mysql mysql-connector-java 运行时

当您从 spring.io 生成项目时,它会将 mysql 的依赖关系提供为 mysql-connector-j,这在我的情况下引起了问题,当我将其更改为 java 时,它在 mysql 中创建了表。

© www.soinside.com 2019 - 2024. All rights reserved.