2012-06-02 3 views
1

У меня эти три таблицы.hql выбрать таблицы записей из многих в одну таблицу отношений

UserTrackRecord -> id, profile_id(fk), object_profile_id(int) 
Profile and -> id 
ProfilePersonalInfo-> id, profile_id(fk), firstname, lastname 

profile_id и object_profile_id является для этой цели, что, когда кто-то посылает мне запрос дружбы, object_profile_id является моим профилем и идентификатором внешнего ключа профиля идентификатор отправителя.

В одном профиле есть много записей в формате usertrack. В одном профиле есть один профильpersonalinfo (Есть еще две таблицы, такие как profilepersonalinfo, которые являются базовыми и фоном с профилем как fk).

У меня есть свой собственный идентификатор профиля (objecct_profile_id). 1. Теперь я хочу получить первое имя, фамилию отправителя запроса и информацию из двух других таблиц.

SQL-запрос, который я сделал это

select utr.profile_profile_id, ppi.dob, ppi.first_name, ppi.last_name, " 
       + "pbi.religion, pbi.city_birth, pbi.country_birth from " 
       + "user_track_record utr " 
       + "inner join profile_personnel_info ppi on ppi.profile_profile_id=utr.profile_profile_id " 
       + "inner join profile_background_info pbi on pbi.profile_profile_id=utr.profile_profile_id " 
       + "where utr.object_profile_id=1 

, который работает отлично.

В HQL, когда я упростил мой запрос в лучшем случае, он стал

Select * from UserTrackRecord utr inner join ProfilePersonalInfo ppi 

но идентификатор не работал, и он дал мне внешним или полное объединение должно сопровождаться исключением запроса выражения пути.

я отправил тот же самый вопрос раньше, но кто-то де-голосовала это :(так что я сделал несколько больше R & D, но не нашел решения.

+0

Ваше сообщение напрямую не связано с JSF, я удалил этот тег и вместо этого добавлю Java. –

+0

HQL работает с объектами. Вместо описания ваших таблиц покажите нам сущности и их ассоциации и сообщите нам, что вы хотите вернуть из запроса, с точки зрения этих объектов. –

ответ

0

Я понимаю, почему это было отвергнуто ранее. Перейди через документацию спящей до размещения вопроса.

Как уже упоминался выше, спящим режим работы с юридическими лицами, необходимо упомянуть псевдоним, когда вы соединяющие таблицы в спящем режиме.

Select utr from UserTrackRecord utr inner join utr.profilePersonalInfo ppi and so on...... 

Поскольку вы не предоставили свой entitie s, я предполагаю, что UserTrackRecord имеет атрибут, называемый profilePersonalInfo, который относится к типу ProfilePersonalInfo. Если нет, то пройдите через ассоциации Hibernate.

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