对于使用@Entity注释的类,Hibernate不会在h2中创建专用表

时间:2018-05-29 21:27:40

标签: java hibernate

所以,我有类,用实体注释,当我启动Spring启动应用程序时,我希望Hibernate在h2中创建Table,但我什么也看不见 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() {
}
请停止

2 个答案:

答案 0 :(得分:0)

JPA具有DDL生成功能,可以将这些功能设置为在数据库启动时运行。这是通过两个外部属性来控制的:

spring.jpa.generate-ddl(布尔值)打开和关闭功能,与供应商无关。 spring.jpa.hibernate.ddl-auto(枚举)是一种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

答案 1 :(得分:-1)

由于一个简单的愚蠢错误,我遇到了相同的错误。我想念启用休眠的拼写程序包名称。您可以正确检出它。