Установите стратегию именования консоли Intellij IDEA JPA

#spring-boot #hibernate #jpa #intellij-idea

Вопрос:

У меня есть проект Spring Boot 2.5.6 PostgreSQL по умолчанию (за исключением Ломбока) с очень простым отображением JPA, открытым в Intellij IDEA 2021.2.3. Конфигурация JPA реализована с аннотациями (без XML). Само приложение работает нормально, записи сохраняются и извлекаются из базы данных. В окне «Сохраняемость» я правильно вижу свою структуру JPA, источник данных назначен. Вот код сущности:

 @Entity @Data ... public class Cover { ... private String ageRestriction; }  

Но когда я пытаюсь выполнить запрос, например select c from Cover c , с помощью, я получаю ошибку:

 jpa-qlgt; select c from Cover c [2021-11-01 16:14:03] [42703] ERROR: column cover0_.agerestriction does not exist [2021-11-01 16:14:03] Hint: Perhaps you meant to reference the column "cover0_.age_restriction".  

Я попытался добавить конфигурацию стратегии именования в свои настройки, но это не возымело никакого эффекта:

 spring:  jpa:  hibernate:  naming:  physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy  implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy  

Я также не вижу «Назначить стратегию именования» в контекстном меню модуля сохранения (см. Скриншот). Есть ли способ заставить консоль JPA использовать ту же стратегию именования, что и мое приложение? ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС IDE

PS: Мне удалось заставить консоль работать после указания @Column для всех имен полей из нескольких слов и добавления аннотации @Table со schema свойствами и name свойствами. Но я бы предпочел каким-то образом синхронизировать конфигурации консоли и приложения JPA/Hibernate.

Комментарии:

1. Вы выбрали своего поставщика JPA в Project Structure gt; gt; gt; Modules gt; gt; your module gt; gt; JPA gt;gt; Default JPA Provider ?

2. @gmanjon да, был выбран режим гибернации.

3. Вы пробовали использовать предыдущую версию Intellij IDEA? Удаление *.iml/.идея/цель/? Аннулирование тайников?

4. 1) IDEA 2020 не видит вторичной сущности, связанной через @Embedded, поэтому я даже не смог добраться до той же точки 2) У меня нет такой папки 3) Да, никакого эффекта

5. Извините. Закончились идеи без дополнительной информации. Может быть, со всей структурой проекта (папками), скриншотом окна идеи «Структура проекта» мы можем что-то придумать. Вы пробовали удалить @Embedded и попробовали проект с простыми сопоставлениями JPA? То, что это плохо работает в предыдущих версиях, звучит подозрительно (может указывать на это направление).