根据您的情况,更好的主意是使用UUID:
因此,任何人都可以创建一个UUID并几乎可以肯定地使用它来标识某些内容,即该标识符不会重复已经或将要创建的用于标识其他内容的标识符。因此,以后可以将由独立各方用UUID标记的信息合并到单个数据库中,或在同一信道上传输,且重复的可能性很小。
@Service
public class UtilityServices {
@Autowired
private UniqueIdRepository uniqueIdRepository;
@Transactional
public String getUniqueIdentifier() {
String uniqueId = String.format("%s-%s",
RandomStringUtils.randomAlphanumeric(4),
UUID.randomUUID().toString().replace("-", "")
);
// you Could left this check
while (uniqueIdRepository.existsById(uniqueId)) {
uniqueId = UUID.randomUUID().toString().replace("-", "");
}
uniqueIdRepository.save(new UniqueId(uniqueId));
return uniqueId;
}
}
您可以使用@Data
Model:
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class UniqueId implements Serializable {
private static final long serialVersionUID = 0L;
@Id
private String uniqueId;
}
而且不要忘记serialVersionUID
。