Как назначить случайное уникальное значение, сгенерированное базой данных, в поле Hibernate POJO - PullRequest
0 голосов
/ 11 июня 2019

Проблема в том, что мне нужно сгенерировать уникальное значение для одного из моих полей POJO в Java.Я использую Hibernate.

Это довольно просто решить с помощью генератора последовательностей, но в моей реальности мне нужно каждый раз делать его случайным, и мне нужно, чтобы оно имело значение от 10 ^ 5 до 10 ^ 6 -это должно быть 6-значное число.

Таким образом, это также не проблема для его генерации локально в сервисе Java, но что, если у меня есть еще 2 таких же сервиса.Что делать, если они будут генерировать одно и то же число, что нарушает уникальность моих чисел.Вот почему мне нужно, чтобы это число было сгенерировано базой данных.

Пожалуйста, посоветуйте мне лучший подход для достижения этой цели.Какой стратегии мне нужно следовать.Спасибо

1 Ответ

1 голос
/ 11 июня 2019

Нет необходимости делать это на уровне ORM. Просто дайте механизму базы данных автоматически увеличить его.

Вы можете установить поле как уникальное и автоматически увеличивать с 100 000 AUTO_INCREMENT = 100000; при создании таблицы.

Ваши номера будут гарантированно уникальными.

Вы также можете сделать это вручную на уровне обслуживания, если поставите и проверку на самый большой существующий номер, и вставку в одной транзакции.

Вы также можете сделать это через триггер.

...