如何在spring数据jpa中生成特定范围内的id字段值

How to generate id field value within specific range in spring data jpa

有什么方法可以在我的 Spring 引导应用程序中将 ID 字段生成为 4 位数字,即从 1000 到 9999。当前 ID 字段如下所示:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "EMP_ID", nullable = false)
public short getEmp_id() {
    return emp_id;
}

截至目前,id 是从 1 生成的。但我希望它从 1000 开始生成,并以 1 递增,直到 9999。

根据 Ishikawa 在评论中的建议并参考 Sequence Generation 中的序列生成,做了以下更改:

@Id
@GenericGenerator(
        name = "empid-sequence-generator",
        strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "user_sequence"),
                @Parameter(name = "initial_value", value = "1000"),
                @Parameter(name = "increment_size", value = "1")
        }
)
@GeneratedValue(generator = "empid-sequence-generator")
@Column(name = "EMP_ID", nullable = false)
public short getEmp_id() {
    return emp_id;
}

但即使在尝试保存 emp 时出现以下异常:

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'user_sequence'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1624)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:594)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:524)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7194)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2979)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:248)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:223)

注意:这是第三方数据库,所以我不能做任何事情 schema/constraint changes.I 只需要通过 java 代码来处理。

我的错。忘记在 application.properties.

中取消注释下面的行
spring.jpa.hibernate.ddl-auto = update

在我重新启动我的应用程序时取消注释后,它创建了“user_sequence”。