如果一个序列已达到其最大值,则从另一个 Oracle 序列获取值

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

我有一个名为 SEQ_A 的预言序列,范围从 1 到 100。 我想以这样的方式处理我的 JPA 代码:如果 SEQ_A 中的范围已达到最大数量,则应用程序应从 SEQ_B 读取,如果 SEQ_B 已达到最大数量,则应从 SEQ_C 读取,依此类推。

我应该如何使用 JPA 在 Java 代码中处理这个问题。

@Repository
public interface SequenceRepository extends JpaRepository<SeqValue, Long>{

@Query(value = "select 'A' || SEQ_A.nextval from dual", native = true)
Long getNextSequence();

}

SeqValue 类:

@Entity
public class SeqValue{

@Id
private Long id;

private Long sequenceValue;

//constructor, getter, setter
}

在我的服务类中,我调用 getNextSequence() 并将前缀 A 附加到序列号,如何确保如果 SEQ_A 已达到最大限制(例如 100),那么它应该使用 SEQ_B 并将前缀 B 附加到序列号,一旦 B 达到其极限,则使用 SEQ_C 等等。

java oracle hibernate jpa spring-data-jpa
1个回答
0
投票
@Repository
public interface SequenceRepository extends JpaRepository<SeqValue, Long> {

    @Query(value = "SELECT CASE WHEN SEQ_A.nextval <= 100 THEN 'A'||SEQ_A.nextval WHEN SEQ_B.nextval <= 100 THEN 'B'||SEQ_B.nextval ELSE 'C'||SEQ_C.nextval END FROM dual", native = true)
    String getNextSequence();
}
© www.soinside.com 2019 - 2024. All rights reserved.