MySQL查询到QueryDsl查询(处理别名)

时间:2018-09-03 18:25:52

标签: mysql spring spring-data-jpa spring-data querydsl

我正在尝试将以下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所述,由于qt1qt2之间没有关系,因此引发了错误。

如何在QueryDSL中重写MySQL查询?

0 个答案:

没有答案