我对尊敬的用户的问候 我是Spring Boot的新手,我只想在H2数据库中创建简单表 这是模型课
@Entity
public class Human
{
@Id
private long id;
private String firstname;
private String lastname;
private String email;
public long getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
这是pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<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>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</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>
和application.properties:
spring.h2.console.enabled= true
spring.h2.console.path=/h2
spring.datasource.url=jdbc:h2:file:~/user
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
直到这里应用程序运行良好,唯一问题是该表不会在H2控制台中显示(我不知道它是否真正创建,但是当我使用H2控制台时,该表是立即创建的)
所以请问可能是什么问题? 感谢您的帮助
答案 0 :(得分:0)
您需要检查和验证几件事,以确保其正常工作。
schema.sql
中。还要确保将文件放在目录src/main/resources/
文件夹下。但是在提供schema.sql
确保禁用,因为两者均无法同时停用。在基于JPA的应用中,您可以选择让Hibernate创建 模式或使用schema.sql,但您不能两者都做。确保禁用 如果使用schema.sql,则为spring.jpa.hibernate.ddl-auto。
spring.jpa.hibernate.ddl-auto
中。此外,请确保将文件放在目录data.sql
文件夹下。这将在ddl之后执行-auto创建表。像这样的存储库层:
src/main/resources/
正如@sovannarith cheav所说,您需要在@Repository
public interface HumanRepository extends JpaRepository<Human, Integer> {
}
或application.properties
中提供该属性,例如:
application.yml
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
属性可以具有不同的值,具体取决于您的用例。此属性的值可以是:
validate:验证架构,不对数据库进行任何更改。
更新:更新架构。
create:创建模式,销毁先前的数据。
create-drop:在会话结束时删除架构。
如果这不起作用,则可能是springboot无法识别H2,因此请尝试设置以下内容:
spring.jpa.hibernate.ddl-auto
官方Doc
答案 1 :(得分:0)
这里的解决方案是为主类添加注释
@EntityScan("com.example.model")
因此,这里Spring将使用H2数据库扫描com.example.model和connet包,然后创建表