Как сгенерировать случайную величину из 6 символов - PullRequest
0 голосов
/ 09 ноября 2018

Мне нужен уникальный буквенно-цифровой code для моей сущности.

Это не идентификатор. Также есть идентификатор. Но также это code поле уникально.

Будет так

"BS" + 6 alphanumeric chars 

6 буквенно-цифровой.

"BS" - строка по умолчанию. Таким образом, все они будут иметь «BS» в начале

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", updatable = false, nullable = false)
private Long id;

Я использую пружинный ботинок. С Hibernate я могу делать такие вещи, но мне нужно сделать размер 8 или 6 + 2.

Также у моего sql есть @Generator, но я не смог сделать

И каждый раз я не хочу получать от дБ, увеличивать и сохранять. Я думаю, что это не очень хороший способ?

Что я могу сделать? Кастом generator?

Я тоже это искал

https://stackoverflow.com/a/47934704/10309977

но не смог найти способ сделать

Это будет около 1000 поколений. Ежегодно около 1-10 миллионов.

1 Ответ

0 голосов
/ 09 ноября 2018

Пользовательский генератор, реализующий необходимую логику, кажется лучшим способом для генерации вашего уникального буквенно-цифрового `кода`.

«Проблема» с GUID / UUID заключается в том, что они имеют фиксированную длину (длиннее, чем вам нужно), вы все равно можете получить подстроку, но у вас может быть шаблон того, как генерируется значение.

По своему опыту, я всегда генерировал уникальные случайные кодовые значения на основе шаблона, который можно интерпретировать и извлекать из него информацию. Это мой подход. У вас есть 62 символа для работы с 26 строчными буквами, 26 заглавными буквами и 10 цифрами.

Если ваш `код` должен заканчиваться на` "-" +2 числа`, вы должны сгенерировать строку из 5 символов, затем объединить ваши 2 числа.

Также вам может понадобиться сделать ваш код более 8 символов

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