我的实体需要一个唯一的字母数字code
。
它不是id。也有身份证。而且,此code
字段是唯一的。
会是这样
"BS" + 6 alphanumeric chars
6个字母数字。
“ BS”是默认字符串。因此,他们所有人的开头都将带有“ BS”
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
我正在使用弹簧靴。使用休眠模式,我可以执行此类操作,但是我需要将大小设置为8或6 + 2。
我的sql也有@Generator
,但我没办法做
每一次,我都不想从数据库中获取,增加并保存。我认为这不是好方法吗?
我该怎么办?自定义generator
?
我也在寻找这个
https://stackoverflow.com/a/47934704/10309977
但没办法看
大约有1000代。因此,每年大约有1到10百万。
答案 0 :(得分:1)
实现所需逻辑的定制生成器似乎是生成唯一字母数字“代码”的最佳方法。
GUID / UUID的“问题”是它们具有固定的长度(比您所需的长度长),您仍然可以获得子字符串,但是您可能对值的生成方式有所了解。
根据我的经验,我总是根据可解释并从中检索信息的模式生成唯一的随机代码值。这是我的方法。您设置了62个字符,可以使用26个小写字母,26个大写字母和10个数字。
如果您的“代码”应以“-” + 2个数字结尾,则必须生成5个字符的字符串,然后将2个数字连接起来。
另外,您可能需要将代码长度超过8个字符