Как ограничить критерии для ФК в другой таблице? - PullRequest
0 голосов
/ 02 октября 2018

У меня есть таблица, car, у каждого автомобиля есть id, который может отображаться в option (варианты - такие, как обогреватели, электрические стеклоподъемники и т. Д.) В столбце FK_car_id.Так что car имеет отношение 0-ко-многим с option.

Мне нужно автомобилей с опциями .

SQL выглядиткак это:

SELECT c.* from car c
  LEFT JOIN options o on c.id = o.FK_car_id
  GROUP BY c.id;

Как мне сделать это в спящем режиме?Вот что я пробовал:

var c = newCriteria().readOnly();

c.createAlias('car','car');
c.sqlRestriction('SELECT c.* from car c LEFT JOIN options o on c.id = o.FK_car_id GROUP BY c.id');

c.return c.list(asQuery = false);

Но я получаю «Не удалось извлечь набор результатов».


Примечание: это упрощенное представление моего кода длявыделите основной вопрос и приведите минимальный пример.

1 Ответ

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

Используйте это:

c.createCriteria(Car.class, "car")
      .createAlias("car.options", "options", JoinType.LEFT_OUTER_JOIN)
      .setProjection(Projections.groupProperty("car.id"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...