gpt4 book ai didi

java - 生成唯一引用编号

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:54 27 4
gpt4 key购买 nike

技术堆栈:Java 1.6、JPA (Hibernate 3)、Spring 3、Oracle 11g

我正在从事一个项目,其中一项要求是回馈客户一个“ReferenceNumber”。

一个选项是返回行 ID,但要使其起作用,它不能是连续的。否则,您可以猜测下一个数字等。

我可以用 Java 生成一个数字并将其存储在一个单独的列中,但这样我就必须确保没有冲突。

有办法在数据库中生成这样的数字,但不确定是否能保证唯一性。

从数据库的角度来看,这种要求是否有最佳实践?

更新 1

目前我在 Java 中使用以下代码生成数字:

    private static SecureRandom random = new SecureRandom();

public static BigInteger getNew() {
return new BigInteger(60, random);
}

public static BigInteger getNew(int numBits) {
return new BigInteger(numBits, random);
}

更新 2:要求

允许序号将允许:

  1. 顾客猜下一个数字。
  2. 找出两个数字之间有多少个数字(订单)。等等

这个引用最好是一个数字,但是说一个三个字母的前缀后跟数字也可以。

最佳答案

如果您的表有一个序列生成的主键(例如 customer_id),那么您可以反转数字,然后将其转换为八进制表示。因此它仍然看起来像一个十进制数,但它肯定不再是连续的并且很难猜出任何范围。

如果您能找到一种方法来处理原始值中的尾随零(因为它们会成为反转数字中的前导零,因此将在转换过程中被“丢弃”),则该过程甚至是可逆的。

关于java - 生成唯一引用编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com