2013-07-10 4 views
0

У меня две таблицыHibernate - двойной левый присоединиться к одной таблице

Первый plan_time

NAME | START_FK | END_FK 
------------------------ 
test | 1  | 2 

start_fk и end_fk являются FK отсылая к столу раз:

ID | NAME 
--------- 
1 | time1 
2 | time2 

Я выполняю простой запрос:

SELECT pt.*, t1.*, t2.* FROM plan_table pt LEFT JOIN times t1 ON t1.id = pt.start_fk LEFT JOIN times t2 ON t2.id = pt.end_fk 

И вот в чем проблема. Под SQL консоли я получаю хороший результат:

First row from plan_table join by first row from times table and second row from times table. 

Когда я делаю это через спящий режим

SQLQuery sqlQuery = s.createSQLQuery(SQL-QUERY) 
      .addEntity(PlanTime.class) 
      .addEntity(Times.class) 
      .addEntity(Times.class); 

Я получаю 3 объекта

  1. первый ряд от PLAN_TABLE
  2. первая строчка из раз стол
  3. первая серия из раз стол - это дублирование второго объекта.

Это должно быть что-то с Hibernate ... Я проверил SQL, который отправляется в БД, и все в порядке.

:/

Просьба помочь.

+0

почему не использовать HQL вместо SQL-запроса? используйте этот .addEntity ("t2", Times.class) ' – nachokk

ответ

0

Обнаружен метод обхода проблемы. Вот советы, которые помогли мне:

  1. Я получаю t1 и t2 форма Plantable объект через getStartFk() и getEndFk() методов.
  2. Я использую нетерпеливых выборки

Я все еще пытаюсь выяснить, что статус этого вопроса.

https://hibernate.atlassian.net/browse/HHH-3988

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