用 spring jpa 创建了一个 java 项目,然后增加 Student 类,并且标注为 @Enitity 如下:
package com.example.demojpa.models;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Student {
@Id
private Long Id;
private String FirstName;
private String LastName;
public Student(Long id, String firstName, String lastName) {
Id = id;
FirstName = firstName;
LastName = lastName;
}
public Long getId() {
return Id;
}
public String getFirstName() {
return FirstName;
}
public String getLastName() {
return LastName;
}
public void setId(Long id) {
Id = id;
}
public void setFirstName(String firstName) {
FirstName = firstName;
}
public void setLastName(String lastName) {
LastName = lastName;
}
}
然后启动程序,查看数据库。数据库里没有新建student表,也没有在日志中看到创建 student 表的 SQL 语句。检查 application.yml 如下:
spring:
datasource:
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://10.222.49.13;databaseName=demo;user=demo;password=demo;
jpa:
hibernate:
dll-auto: create-drop
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.SQLServerDialect
format_sql: true
多次调试和搜索后后发现需要加上 jpa.generate-ddl: true。最后的 application.yml 如下所示:
spring:
datasource:
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://10.222.49.13;databaseName=demo;user=demo;password=demo;
jpa:
generate-ddl: true # 需要加上这个才能自动生成数据库表
hibernate:
dll-auto: create-drop
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.SQLServerDialect
format_sql: true