代码之家  ›  专栏  ›  技术社区  ›  Travis Heeter

如何将条件限制为另一个表中的FK?

  •  0
  • Travis Heeter  · 技术社区  · 6 年前

    我有一张桌子, car ,每辆车都有一个 id 可能出现在 option (选项包括除霜器、电动车窗等) FK_car_id . 所以 汽车 与有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);
    

    但我得到“无法提取结果集”。


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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Wilder Valera    6 年前

    使用此:

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