如何将条件限制为另一个 table 中的 fk?

How to limit a criteria to fk's in another table?

我有一个 table、car,每辆车都有一个 id 可能会出现在 option 中(选项包括除霜器、电源 windows, 等) 在 FK_car_id 列中。所以 caroption.

是 0 对多的关系

我需要有选项的车

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);

但我得到 "Could not extract Result Set"。


注意:这是我的代码的简化表示,用于突出主要问题并生成最小示例。

使用这个:

c.createCriteria(Car.class, "car")
      .createAlias("car.options", "options", JoinType.LEFT_OUTER_JOIN)
      .setProjection(Projections.groupProperty("car.id"));