SpringBoot和H2自动生成的字段

时间:2018-09-13 19:55:51

标签: hibernate spring-boot jpa h2

我在POJO上有一个字段

@Id
@Column(name="TAG_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer tagId;

当我使用H2作为数据库启动服务时,出现此错误:

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE TAG (TAG_ID NUMBER(10,0) GENERATED AS[*] IDENTITY, etc... PRIMARY KEY (TAG_ID)) "; expected "ALWAYS, BY"; SQL statement:
create table tag (tag_id number(10,0) generated as identity, etc... primary key (tag_id)) [42001-197]

expected "ALWAYS, BY"错误是关于什么的?为什么不能生成表?

2 个答案:

答案 0 :(得分:0)

尝试使用@GeneratedValue(strategy=GenerationType.AUTO)。也许H2不支持身份机制。

答案 1 :(得分:0)

POJO(实体类)中的代码很好,无需进行任何更改。需要从spring.jpa.hibernate.naming.physical-strategy下的bootstrap.yml文件或application.yml文件(当不考虑bootstrap.yml时)src/test/resources文件中提供spring: jpa: hibernate: naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 参数。

stringr::str_replace_all(str, ref)