Для базы данных H2 в моем тесте весенней загрузки api есть сценарий вставки, который выглядит примерно так:
INSERT INTO STORES_TEMPLATE (ID, COUNTRY, TEMPLATE_NAME_1, STORES_1) VALUES(STORES_TEMPLATE_ID_SEQ.NEXTVAL,'country', 'template_name', 'stores');
INSERT INTO STORES_TEMPLATE (ID, COUNTRY, TEMPLATE_NAME_2, STORES_2) VALUES(STORES_TEMPLATE_ID_SEQ.NEXTVAL,'country', 'template_name', 'stores');
INSERT INTO STORES_TEMPLATE (ID, COUNTRY, TEMPLATE_NAME_3, STORES_3) VALUES(STORES_TEMPLATE_ID_SEQ.NEXTVAL,'country', 'template_name', 'stores');
Объект:
@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "STORES_TEMPLATE")
public class StoresTemplate {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "STORES_TEMPLATE_ID_SEQ")
@SequenceGenerator(name = "STORES_TEMPLATE_ID_SEQ", sequenceName = "STORES_TEMPLATE_ID_SEQ", allocationSize = 1)
private Long id;
@Enumerated(EnumType.STRING)
private CountryEnum country;
private String templateName;
@Lob
private String stores;
public void setStores(List<String> stores) {
this.stores = String.join(",", stores);
}
@JsonIgnore
public List<String> getStoresAsList() {
return Arrays.stream(stores.split(","))
.distinct()
.collect(Collectors.toList());
}
}
На производстве oracle база данных все работает нормально, но в моей тестовой среде с базой данных h2, когда я пытаюсь сохранить новую сущность, генератор последовательности выдает мне идентификаторы, которые дублируются с идентификаторами, предопределенными данными миграции sql. Что я могу сделать, чтобы исправить эту проблему?
Какая уловка заключалась в том, чтобы исключить скрипт вставки для тестов, но есть ли другое возможное решение?