编程语言
首页 > 编程语言> > java-休眠自动增量

java-休眠自动增量

作者:互联网

我正在使用休眠的“增量”生成器来生成我的自动增量ID.在我不得不添加另一个也使用“增量”生成器生成新ID的应用程序之前,这一直很好.我意识到增量生成器存在一个问题:

"generates identifiers of type long, short or int that are unique only when no other process is inserting data into the same table. Do not use in a cluster."

有什么办法可以使用休眠方式来解决这个问题?还是我必须编写其他代码来锁定表,检查数据库中的最大Id(然后递增),最后释放锁?不能使用一种休眠配置.我也不能将auto_increment选项添加到db表中,因为表上有多个键.

欢迎任何建议,我想这是一个普遍的问题.

解决方法:

several other generators可能会满足您的需求:

> hilo使用hi / lo算法有效地生成long,short或int类型的标识符,给定一个表和一个列(默认情况下分别为hibernate_unique_key和next_hi)作为hi值的源.高/低算法生成仅对于特定数据库唯一的标识符.
> uuid:使用128位UUID算法生成在网络内唯一的字符串类型的标识符(使用IP地址). UUID编码为长度为32个十六进制数字的字符串.

我建议您看一下hi/lo.

Also I can not add the auto_increment option to the db table because we have more than one key on the table.

我发现此语句令人困惑-如果表的主键使用多个列,您不能让一列自动递增吗?

为什么您会有一个以上的主键,而其中的一列仍然是唯一的-这使得id字段不可能拥有多个值,从而否定了复合PK的目的.

标签:hibernate,auto-increment,java
来源: https://codeday.me/bug/20191105/1998593.html