Я получаю исключение при весенней загрузке с postgres DB при использовании генератора последовательности.
Ниже приведена трассировка стека
2020-01-17 15:54:10 - SQL Error: 0, SQLState: 42P01
2020-01-17 15:54:10 - ERROR: relation "predefmapping_seq" does not exist
Position: 17
2020-01-17 15:54:13 - Error adding tags to the DB:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not
extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149) ~
[hibernate-core-5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157) ~
[hibernate-core-5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164) ~
[hibernate-core-5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:790) ~[hibernate-core-
5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:768) ~[hibernate-core-
5.2.17.Final.jar!/:5.2.17.Final]
at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~ [na:1.8.0_232]
Ниже приведен столбец класса Entinty, для которого последовательность добавлена.
@Id
@SequenceGenerator(name="PREDEFMAPPING_SEQ", sequenceName="PREDEFMAPPING_SEQ",initialValue = 1, allocationSize=1)
@GeneratedValue(strategy = GenerationType.AUTO ,generator="PREDEFMAPPING_SEQ")
@Column(name = "ID")
private long id;
Обратите внимание, что это было проверено с db2, oracle и ms sql. Однако для postgres это дает мне вышеупомянутое исключение.
Имя последовательности в таблице postgres db - "beforefmap_seq", а не "PREDEFMAPPING_SEQ", как в сущности.
Большинство решений предлагаю изменить стратегию генерации на IDENTITY, однако я хотел найти решение, которое было бы применимо ко всем (db2, oracle, мс sql и postgres)