首页 > 解决方案 > MySQL 查询到 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错误。抛出错误,因为 和 之间没有任何关系qt1,如此qt2所述。

MySQL 查询如何在 QueryDSL 中重写?

标签: mysqlspringspring-data-jpaspring-dataquerydsl

解决方案


推荐阅读