无法使用data.sql生成UUID ID

时间:2019-04-24 06:13:45

标签: hibernate spring-boot

没有data.sql,一切正常。

我正在使用Spring Boot 2和H2数据库。

但是当我尝试使用author初始化data.sql表时,出现了错误:

Caused by: org.h2.jdbc.JdbcSQLException: 
NULL not allowed for column "ID"; SQL statement: insert into author (`name`) values ('Pushkin')

这里是Author实体:

@Entity
public class Author {
    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    private UUID id;
    @Column(unique=true)
    private String name;

    //getters/setters/constructors
}

这里是data.sql

insert into author (`name`) values ('Pushkin');

2 个答案:

答案 0 :(得分:2)

仅当您使用JPA / Hibernate存储实体时,UUIDGenerator才起作用。

在data.sql中执行普通SQL时,不使用Hibernate。 您必须遵循JB Nizet http://www.h2database.com/html/functions.html#random_uuid

的建议

答案 1 :(得分:0)

首先,请检查您要生成的ID在数据库中是否勾选了自动递增,然后在下面的@ID中写入, @GeneratedValue(策略= GenerationType.IDENTITY)。它将使您的ID唯一。