我正在尝试将以下MySQL查询转换为QueryDSL
SELECT t1.*
FROM TrainTable t1 LEFT JOIN TrainTable t2
ON (t1.Train = t2.Train AND t1.Time < t2.Time)
WHERE t2.Time IS NULL;
但是我在如何处理ON
部分和WHERE
部分上的别名上仍然受困。
这就是我的想法:
QTrainTable qt1 = new QTrainTable ("t1");
QTrainTable qt2 = new QTrainTable ("t2");
List<TrainTable > fetch = query.select(qt1)
.from(qt1)
.leftJoin(qt2).on(qt1.institution.id.eq(qt2.institution.id).and(qt1.transDate.lt(qt2.transDate)))
.where(qt2.transDate.isNull())
.fetch();
但是出现Path expected for join
错误。如here所述,由于qt1
和qt2
之间没有关系,因此引发了错误。
如何在QueryDSL中重写MySQL查询?