休眠自定义序列发生器-表不存在

问题描述 投票:0回答:1

我正在使用自定义类来生成ID:

public class StringPrefixedSequenceIdGenerator extends SequenceStyleGenerator

也在实体属性上使用此类:

@Id
    @GenericGenerator(name = "pipeline_seq_generator", strategy = "com.model.StringPrefixedSequenceIdGenerator", parameters = {
            @Parameter(name = StringPrefixedSequenceIdGenerator.INCREMENT_PARAM, value = "50") })
    @GeneratedValue(generator = "pipeline_seq_generator", strategy = GenerationType.SEQUENCE)
    @Column(name = "pipeline_id", unique = true, nullable = false, length = 100)
    public String getPipelineId() {
        return this.pipelineId;
    }

问题是休眠状态仍然尝试从数据库中获取序列:从pipeline_seq_generator中选择next_val作为id_val以进行更新

错误:java.sql.SQLSyntaxErrorException:表'table.pipeline_seq_generator'不存在

spring-boot java-8 hibernate-5.x
1个回答
0
投票

strategy = GenerationType.SEQUENCE中删除@GeneratedValue

例如

@Entity
public class User {
    @Id
    @GeneratedValue(generator = "sequence-generator")
    @GenericGenerator(
      name = "sequence-generator",
      strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
      parameters = {
        @Parameter(name = "sequence_name", value = "user_sequence"),
        @Parameter(name = "initial_value", value = "4"),
        @Parameter(name = "increment_size", value = "1")
        }
    )
    private long userId;

    // ...
}

来源:https://www.baeldung.com/hibernate-identifiers#3-sequence-generation

© www.soinside.com 2019 - 2024. All rights reserved.