在 java spring 数据中生成自动递增字段

generate auto-incremented field in java spring data

我需要创建一个自动递增的键(不是主键)以将其用作 spring-data 中的文件名 这是我尝试过的:

@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "BODY_FILE")
private long bodyFile;

在 liquibase 中:

- column:
     name: BODY_FILE
     type: BIGINT
     autoIncrement: true

但字段主体文件始终为 0。

@生成的值将仅适用于主键。

  • 它不适用于非主键的字段。
  • 它甚至不能用于复合主键。

    但是生成类型为什么不能应用于非主字段?

    一个可能的答案是大多数旧版本的数据库要么不支持非主键字段的 AUTO_INCREMENT(生成的值),要么如果它们支持也有约束的较新版本-像 MySQL
    每个 table 只能有一个 AUTO_INCREMENT 列,它必须被索引,并且不能有默认值。

    那么这个零在您的数据库中是从哪里来的呢?
    这是因为你的数据类型 'Long' 它的默认值存储在你的数据库中。

    有关@Generated 值的更多详细信息official documentation