Создайте первичный ключ последовательности с помощью GenericGenerator, но если идентификатор уже присутствует, используйте тот же - PullRequest
0 голосов
/ 22 января 2019

Я использую 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 для пропуска создания последовательности?И это правильный подход для решения этой проблемы?

...