hibernate - 非主键列的自动递增数字生成

标签 hibernate jpa

我对主键使用了以下 id 生成策略。

    @Id
        @GeneratedValue(strategy = IDENTITY)
        @Column(name = "id", unique = true, nullable = false, insertable = false, updatable = false)
        private Integer id;

我想对非主键列做同样的事情。
[a] 为这样的 key 定义自动生成方案的语义是什么
[b] 是否保证生成的数字不会出现数字差距。

最佳答案

如果删除 @Id注释,并保留其余部分(当然要更改字段名称),这应该可以工作。

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "columnName", unique = true, nullable = false, insertable = false, updatable = false)
    private Integer columnName;
通过允许数据库生成列值,您将确保没有间隙,删除和回滚的情况除外。
例如,如果您删除表格中间的行,则会产生一个无法填充的空白。

关于hibernate - 非主键列的自动递增数字生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379535/

相关文章:

java - 实体类中的属性有一个mappedBy值,该值确实存在于其所属实体中

java - JPA脚本生成重复语句

java - hibernate 做预测缓存吗?

hibernate - JPA Hibernate 调用 Postgres 函数无效返回映射异常 :

java - 我应该为读语句使用哪种事务隔离级别?

java - Oracle 将空字符串转换为 null 但 JPA 不会相应地更新实体缓存

java - 在 Maven 测试期间找不到 persistence.xml

java - org.hibernate.hql.internal.QueryExecutionRequestException : Not supported for DML operations

sql - 谷歌云 SQL 第二代 -> "Aborted connection"

hibernate - JPQL选择具有最大值的记录