Spring根据表中的行数生成ID

Posted

技术标签:

【中文标题】Spring根据表中的行数生成ID【英文标题】:Generate ID based on number of rows in table in Spring 【发布时间】:2012-04-26 06:26:55 【问题描述】:

我正在开发一个 Spring 3 MVC 应用程序。我使用休眠作为ORM。在定义模型时,我有一个 ID 字段。我想以这样一种方式自动生成它,它的值是表中的当前行数 + 1。怎么做?

【问题讨论】:

【参考方案1】:

AUTOINCREMENT 列或序列可以解决问题。在 Hibernate 中,只需用 @GeneratedValue 注释 id

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

Hibernate 会自动将 id 设置为下一个可用值。

另见

Hibernate Auto Increment ID

【讨论】:

嗨。这里的问题是某些元素可能会在某个时候被删除。在这种情况下,当我添加一个新元素时,id 不是按顺序排列的,而是等于在表中某一点添加的元素总数。 @KaushikBalasubramanin:我知道。但是想象一下:当你添加三个记录时,它们将有 1、2 和 3 个 id,对吗?然后,当您删除第一个或第二个并添加另一个时,根据您的算法,它应该具有 id 3(数据库中一次存在 2 条记录) - 但具有此类 id 的记录已经存在!

以上是关于Spring根据表中的行数生成ID的主要内容,如果未能解决你的问题,请参考以下文章

如何删除EXCEL表中的大量数据行,要删除的行数大概8万

根据表中的行数调整 NSTableView 或 NSScrollView 的大小

如何检索表中的行数

根据日期和在 Snowflake 中的另一个表中为该日期列出的最大行数限制插入到表中的行

如何计算 MySQL 表中的行数(PHP PDO)

如何加快计算 PostgreSQL 表中的行数?