SpringBoot Maven 项目不在数据库中创建表

问题描述

我用 Spring Initializr 创建了一个新项目,并配置了与 SSMS 数据库的连接:

spring.datasource.url=jdbc:sqlserver://xxxxxxxx;databaseName=yyyyyy
spring.datasource.username=
spring.datasource.password=
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.sqlServerDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.sqlServer2012Dialect
spring.jpa.hibernate.ddl-auto=update

我还创建了一个测试模型类来检查一切正常:

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@ToString
@Builder
@Entity
@Table(name = "USR",schema = "dbo")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer usrId;
}

这是我的控制台输出

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

2020-12-21 21:15:06.574  INFO 22192 --- [  restartedMain] c.e.employees.EmployeesApplication       : Starting EmployeesApplication using Java 11.0.8 on DESKTOP-OEEHFPE with PID 22192 (C:\Alina\employees\target\classes started by olaru in C:\Alina\employees)
2020-12-21 21:15:06.577  INFO 22192 --- [  restartedMain] c.e.employees.EmployeesApplication       : The following profiles are active: @spring.profiles.active@
2020-12-21 21:15:06.637  INFO 22192 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2020-12-21 21:15:07.211  INFO 22192 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-12-21 21:15:07.226  INFO 22192 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 5 ms. Found 0 JPA repository interfaces.
2020-12-21 21:15:07.646  INFO 22192 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-12-21 21:15:07.695  INFO 22192 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.25.Final
2020-12-21 21:15:07.798  INFO 22192 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2020-12-21 21:15:07.902  INFO 22192 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-12-21 21:15:08.200  INFO 22192 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2020-12-21 21:15:08.220  INFO 22192 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.sqlServer2012Dialect
2020-12-21 21:15:08.710  INFO 22192 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-12-21 21:15:08.721  INFO 22192 --- [  restartedMain] j.LocalContainerEntityManagerfactorybean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-12-21 21:15:08.761  INFO 22192 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2020-12-21 21:15:08.873  INFO 22192 --- [  restartedMain] c.e.employees.EmployeesApplication       : Started EmployeesApplication in 2.792 seconds (JVM running for 4.218)
2020-12-21 21:15:08.885  INFO 22192 --- [extShutdownHook] j.LocalContainerEntityManagerfactorybean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-12-21 21:15:08.892  INFO 22192 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2020-12-21 21:15:08.898  INFO 22192 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

Process finished with exit code 0

我在控制台中没有看到任何错误,但没有创建表。如果您知道出了什么问题,请告诉我。

解决方法

您是否添加了所需的依赖项?

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
    </dependency>

您还需要启用实体扫描,以防万一:

@Configuration
@EntityScan(basePackages = {"my.package"})
@EnableJpaRepositories(basePackages = {"my.package"})

基本上你的前三个属性就足够了,但其他的应该不会坏。

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=my-app
spring.datasource.username=sa
spring.datasource.password=<<YOUR_PASSWORD>>

如果您喜欢在 https://bootify.io 为 MS SQL 创建 Spring Boot 应用程序以查看完整配置。