Пытаюсь разобраться со связкой spring jpa + hibernate. Исходные данные:
- БД - postgresql 10
- Для генерации id cущности использую sequence в БД
- не SpringBoot - разворачиваю war в Tomcat
Сущность:
@Entity
@Table(name = "category")
public class Category {
@Id
@Column(name = "category_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
//остальные члены класса
}
Репозиторий для работы с БД:
@Repository
public interface CategoryRepository extends JpaRepository<Category, Integer> {
}
Проблема - при попытке добавить запись в БД получаю ошибку:
org.postgresql.util.PSQLException: ОШИБКА: отношение "category_category_id_seq" не существует
Т.е. hibernate вместо того, чтобы опираться на на sequence в БД при добавлении записи (он должен это делать в соответствии с аннотацией @GeneratedValue(strategy = GenerationType.IDENTITY)) пытается вычислить id из таблицы category_category_id_seq, которой нет.
При этом получение записей из БД или обновление существующих работает корректно. Работу sequence проверял ручным добавлением записи в БД.
upd:
Порылся в исходниках hibernate и в диалекте для своей БД нашел что для вычисления идентификатора используется запрос вида select currval('" + table + '_' + column + "_seq'), т.е. идет обращение именно к sequence, а она у меня называется не так.
category_category_id_seq