Создайте первичный ключ последовательности с GenericGenerator, но если идентификатор уже присутствует, используйте тот же

Я использую OracleDB, и у меня есть таблица SHIPPINGMETHODS. Первичный ключ - shipperId, а значения создаются в последовательности.

@Entity
@Table(name = "SHIPPINGMETHODS")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ShippingMethod implements Serializable {
    private static final long serialVersionUID = 1433756398300075687L;

    @Column(name = "SHIPPERID")
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = 
    "shipperSequence")
    @SequenceGenerator(sequenceName = "SHIPPER_SEQ", allocationSize = 
    1, name = "shipperSequence")
    private Integer shipperId;

Пока все хорошо, но я хотел бы создать пользовательскую генерацию последовательности, чтобы получить метод доставки из БД, чтобы иметь возможность сохранить его с тем же значением shipperId, но не создавать новую последовательность. Поскольку SequenceHiLoGenerator и SequenceGenerator устарели, я решил использовать SequenceStyleGenerator.

@Entity
@Table(name = "SHIPPINGMETHODS")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ShippingMethod implements Serializable {
    private static final long serialVersionUID = 1433756398300075687L;

    @Column(name = "SHIPPERID")
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = 
    "shipperSequence")
    @GenericGenerator(
    name = "shipperSequence",
    strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
    parameters = {
        @Parameter(name = "sequenceName", value = "SHIPPER_SEQ"),
        @Parameter(name = "allocationSize", value = "1")
    })
    private Integer shipperId;

Как решить проблему, если уже существует shipperId для пропуска последовательности создания? И это правильный подход для решения этой проблемы?

0 ответов

Другие вопросы по тегам