SqlExceptionHelper - ERROR: column does not exist Позиция: 8

Рейтинг: 1Ответов: 1Опубликовано: 27.02.2023

Столкнулся с ошибкой маппинга колонок таблицы с Entity, если поля в таблице Postgres написаны с большой буквы.

@Entity
@Table(name = "accdivtype", schema = "public")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@EqualsAndHashCode
public class AccDivType {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "AccDivTypeID")
    private long accDivTypeID;

ERROR: column accdivtype0_.acc_div_typeid does not exist

фото самой таблицы внутри схемы

введите сюда описание изображения

есть ли решение как это исправить, без переименования колонок?

Ответы

▲ 2Принят

Вам необходимо использовать двойные кавычки в именах полей, выдержка из справки: Идентификатор, заключённый в кавычки, становится зависимым от регистра, тогда как идентификаторы без кавычек всегда переводятся в нижний регистр. Например, идентификаторы FOO, foo и "foo" считаются одинаковыми в PostgreSQL, но "Foo" и "FOO" отличны друг от друга и от предыдущих трёх. (Приведение имён без кавычек к нижнему регистру, как это делает PostgreSQL, несовместимо со стандартом SQL, который говорит о том, что имена должны приводиться к верхнему регистру. То есть, согласно стандарту foo должно быть эквивалентно "FOO", а не "foo". Поэтому при создании переносимых приложений рекомендуется либо всегда заключать определённое имя в кавычки, либо не заключать никогда.)