Hibernate 不会在 h2 中为使用 @Entity 注释的类创建专用表
Posted
技术标签:
【中文标题】Hibernate 不会在 h2 中为使用 @Entity 注释的类创建专用表【英文标题】:Hibernate doesn't create dedicated tables in h2 for classes annotated with @Entity 【发布时间】:2018-11-08 15:09:24 【问题描述】:所以,我有类,用实体注释,当我启动 Spring Boot 应用程序时,我希望 Hibernate 在 h2 中创建表,但我什么也没看到 h2 Spring 应用程序属性只有 spring.h2.console.enabled=true
我的班级看起来像
@Entity
公开课作者
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
public Long getId()
return id;
public void setId(Long id)
this.id = id;
private String firstName;
private String lastName;
private Set<Book> books = new HashSet<>();
public Author()
请停止
【问题讨论】:
检查这有帮助吗? ***.com/questions/26881739/… How to create database schema in hibernate first time and further update it in case of schema modification?的可能重复 【参考方案1】:JPA 具有生成 DDL 的功能,这些功能可以设置为在启动时针对数据库运行。这是通过两个外部属性控制的:
spring.jpa.generate-ddl
(布尔值)打开和关闭功能,并且独立于供应商。
spring.jpa.hibernate.ddl-auto
(enum) 是一种 Hibernate 功能,可以更细粒度地控制行为。
您的属性文件应如下所示:
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
【讨论】:
以上是关于Hibernate 不会在 h2 中为使用 @Entity 注释的类创建专用表的主要内容,如果未能解决你的问题,请参考以下文章
使用 H2 DB 进行 Spring/Hibernate 集成测试
使用 H2、JPA 注释和 Hibernate 问题的一对多关联