如何使用JPA和MySQL生成序列号?

时间:2015-04-14 01:44:05

标签: mysql jpa

我正在使用JPA和mysql并希望生成序列号。我发现所有的例子和参考都指向使用@TableGenerator,看起来它符合我的需要。

然而,在所有示例中,我发现它与@Entity的上下文一起用于实体中的密钥生成。

但我不想要任何@Entity的序列号。我只是希望在其他多个进程中使用越来越多的数据。可以在@Entity的上下文之外使用@TableGenerator吗?或者我是否必须以一种老式的方式自己完成所有这些工作?

由于

1 个答案:

答案 0 :(得分:0)

MySQL通过UUID_SHORT()函数提供此功能。

要看到它的实际效果:

SELECT UUID_SHORT(); # then repeat.

该函数提供一个单调计数器,它返回一个64位无符号整数,每次调用它时递增1。它可以每秒生成16M值,服务器运行的每一秒都没有重复。

当服务器重新启动时,计数器将重新初始化为比之前看到的值更高的值。有一些警告,但它们有记录并易于理解。

每个最多256个不同的MySQL服务器都会生成自己独特的序列,只要每个服务器的服务器ID的LSB是唯一的。