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