Раздетые имена столбцов в Hibernate SQL-запрос - PullRequest
0 голосов
/ 05 сентября 2018

В моем приложении Spring Boot я использую PostgreSQL в качестве основной базы данных. В целях отладки я включил отображение запроса в консоли.

spring.jpa.show-sql=true
#spring.jpa.properties.hibernate.format_sql=true

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

Когда запрос отправляется в базу данных, он отображается в консоли. Используемые там названия столбцов и т. Д. Не соответствуют именам из моей базы данных. Например:

select
    acceptedna0_.pkey as pkey1_0_,
    acceptedna0_.name_accepted as name_acc2_0_,
    acceptedna0_.station_pkey as station_3_0_ 
from
    station_names_accepted acceptedna0_ 
where
    acceptedna0_.name_accepted=?

Похоже, они были сокращены или что-то в этом роде. Как я могу отключить это, чтобы я мог видеть фактический запрос?

Также: возможно ли увидеть фактический базовый запрос PostgreSQL? Это мне очень поможет.

1 Ответ

0 голосов
/ 05 сентября 2018

Так работает SQL; это позволяет вам определять псевдонимы времени выполнения, например. сокращайте операторы SQL, делайте их более удобными для людей или - в этом случае - подходите к вашему конкретному варианту использования, который является результатом для отображения POJO.

А теперь

from
    station_names_accepted acceptedna0_ 

означает: «let alias station_names_accepted таблица с именем acceptedna0_»

Отныне во всем запросе вместо использования station_names_accepted вы можете ссылаться на эту таблицу, используя псевдоним acceptedna0_.

Обычно вы бы назвали его, например, sna - но именно так Hibernate создает псевдонимы - он не должен был быть в удобочитаемом формате:)

Позже (или, скорее, раньше)

select
    acceptedna0_.pkey as pkey1_0_,
    acceptedna0_.name_accepted as name_acc2_0_,
    acceptedna0_.station_pkey as station_3_0_ 

буквально означает: «пусть псевдоним pkey столбец таблицы accepteddna0 (это псевдоним) и назовите его pkey1_0_».

Тот же сценарий - теперь вы можете использовать pkey1_0_ в качестве ссылки на столбец. Опять же, он не предназначен для чтения человеком, но он подходит для процесса отображения Hibernate.

Так в общем, если бы вы скопировали и вставили этот странный SQL в консоль PostgreSQL или любой другой клиент и заменили? с требуемыми значениями запрос будет успешным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...