Невозможно сгенерировать идентификатор UUID с помощью data.sql - PullRequest
0 голосов
/ 24 апреля 2019

Без 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 ]

2 голосов
/ 24 апреля 2019

UUIDGenerator работает только при хранении сущностей с JPA / Hibernate.

Когда вы делаете простой SQL в data.sql, Hibernate не используется. Вы должны следовать предложению JB Nizet http://www.h2database.com/html/functions.html#random_uuid

0 голосов
/ 24 апреля 2019

Прежде всего, пожалуйста, убедитесь, что у вас есть галочка автоинкремента в базе данных для идентификатора, который вы хотите сгенерировать, а затем напишите ниже в @ID, @GeneratedValue (стратегии = GenerationType.IDENTITY).это сделает ваш идентификатор уникальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...