2013-12-19 6 views
0

В моей среде IDE используется другой синтаксис SQL, чем я знаю для спящих запросов. Я перехожу к документам HQL (http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html), и они не объясняют, как этот запрос получен. Это просто и должно быть определение синтаксиса для того, что я нахожу, но я не могу его найти. Может ли кто-нибудь разъяснить мне?Где четко определяется HQL?

Основной HQL запрос звучит так:

SELECT u FROM User u 

В SQL я написал бы это так:

SELECT * FROM User; 

или

SELECT u.* FROM User AS u; 

Но кому нужны дополнительные сложности для такой простой запрос.

Где четко определяется HQL?

+2

Да? Вы связаны с документами, которые определяют HQL. Основное отличие указано в первом абзаце этой ссылки: дополнительная сложность связана с тем, что она является сопоставлением между объектом и таблицами, то есть «HQL полностью объектно-ориентирован и понимает такие понятия, как наследование, полиморфизм и ассоциация» – Bizmarck

+0

Bizmark, Документы Я связал это, чтобы не определить простой пример запроса, который я дал. –

+0

В частности, раздел 14.6 вышеприведенной ссылки JBOSS определяет предложение SELECT, но не * использует * универсальное предложение select и не объясняет использование синонима «u» вместо звездочки, чтобы выбрать весь список столбцов или отсутствие «как» в определении синонима в «user u». Или я полностью неправильно интерпретирую HQL, потому что для этого нет хороших документов. Может ли «u» быть ссылкой на класс «User.Java», который определяет те же столбцы, что и таблица «Пользователь» в БД или наоборот ... Если это так, я не вижу этого отображения в любом месте. –

ответ

2

Вы должны думать об этом по-другому, это похоже на выполнение SQL-запросов против объектов Java, следовательно, это гибридный характер. Вы не пишете SELECT u From User u в HQL, вы могли бы просто написать from yourPackage.User и получить все экземпляры класса User, т.е. все объекты, которые сопоставляются строкам в БД.

Предложения в HQL select больше для доступа индивидуальных свойств в экземплярах классов, например select u.name from User u получите список всех name с, которые являются свойством в объектах Java, отображенных в таблицу.

Смежные вопросы