首先我已经研究了堆栈上的一些解决方案,但它们不起作用。我在 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>
应用程序的主要入口点位于
com.javaenterprise.votingsystem
包中。这意味着组件和实体扫描将在 com.javaenterprise.votingsystem
及其任何子包中找到类。您的实体位于 com.javaenterprise.entity
中,本次扫描未覆盖该实体。
您可以通过将
com.javaenterprise.entity
包重命名为 com.javaenterprise.votingsystem.entity
来解决该问题。或者,您可以使用 @EntityScan
指定要扫描实体的包。
使用以下属性:
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;
}
您可以在 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
你可以尝试实现 Serialized 并添加 DEFAULT 构造函数吗?
我面临着同样的问题,所以对我来说这很有效:
当您从 spring.io 生成项目时,它会将 mysql 的依赖关系提供为 mysql-connector-j,这在我的情况下引起了问题,当我将其更改为 java 时,它在 mysql 中创建了表。