Я перевожу базу данных PostgreSQL на MySQL и наткнулся на проблему с идентификаторами таблицы UUID.
PostgreSQL
CREATE TABLE book (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
title varchar(255) NOT NULL
);
MySQL
CREATE TABLE book (
id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())),
title varchar(255) NOT NULL
);
Используя PostgreSQL следующий фрагмент кода Spring Boot JdbcTemplate, используемый для работы:
...
NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(jdbcTemplate);
KeyHolder keyHolder = new GeneratedKeyHolder();
SqlParameterSource params = new MapSqlParameterSource("title", "Harry Poter");
jdbc.update("INSERT INTO book (title) VALUES (:title)", params, keyHolder);
Map<String, Object> key = keyHolder.getKeyList().get(0);
// use my key
, но теперь с MySQL я не могу получить ключ UUID - KeyHolder пуст. Если ключ является числом, тогда MySQL извлекает его.
Как мне заставить его работать снова?
Версии:
MySQL 8.0
Spring Boot 2.2.4