重现步骤(如果有就写完整)
MPJLambdaWrapper wrapper = new MPJLambdaWrapper()
.selectAll(TableA.class)
.selectCollection(TableB.class, TableADTO::getBList, b->b
.collection(TableC.class, TableBDTO::getCList, c -> c
.selectAssociation("pre", TableB.class, TableCDTO::getTableB))
.leftJoin(TableB.class, TableB::getAid, TableA::getId)
.leftJoin(TableC.class, TableC::getId, TableB::getBid)
.leftJoin(TableB.class, "pre", TableB::getId, TableC::getPreId);
List dtos = tableMapper.selectJoinList(TableADTO.class, wrapper);
报错信息
Unknown column 'pre.ID' in 'on clause'
SQL报错语句:
SELECT
COUNT(*) AS total
FROM
TableA t
LEFT JOIN TableB t1 ON (t1.A_ID = t.ID )
LEFT JOIN TableC t2 ON ( t2.ID = pre.ID )
LEFT JOIN TableB pre ON (pre.ID = t2.prework_id)
这个SQL正确需求语句:
SELECT
COUNT(*) AS total
FROM
TableA t
LEFT JOIN TableB t1 ON (t1.A_ID = t.ID )
LEFT JOIN TableC t2 ON ( t2.ID = t1.ID )
LEFT JOIN TableB pre ON (pre.ID = t2.prework_id)
当前使用版本 1.4.6
该问题是如何引起的?(确定最新版也有问题再提!!!) 目前有3个关系表,tableA (1)-->(n) tableB , tableC tableC 是tableB 的 自关联表关系映射表 tableC有2个字段: id, pre_id tableC的这2个字段值,存储的都是 tableB的 ID 值
重现步骤(如果有就写完整) MPJLambdaWrapper wrapper = new MPJLambdaWrapper() .selectAll(TableA.class) .selectCollection(TableB.class, TableADTO::getBList, b->b .collection(TableC.class, TableBDTO::getCList, c -> c .selectAssociation("pre", TableB.class, TableCDTO::getTableB)) .leftJoin(TableB.class, TableB::getAid, TableA::getId) .leftJoin(TableC.class, TableC::getId, TableB::getBid) .leftJoin(TableB.class, "pre", TableB::getId, TableC::getPreId);
List dtos = tableMapper.selectJoinList(TableADTO.class, wrapper);
报错信息 Unknown column 'pre.ID' in 'on clause'
SQL报错语句: SELECT COUNT(*) AS total FROM TableA t LEFT JOIN TableB t1 ON (t1.A_ID = t.ID ) LEFT JOIN TableC t2 ON ( t2.ID = pre.ID ) LEFT JOIN TableB pre ON (pre.ID = t2.prework_id)
这个SQL正确需求语句: SELECT COUNT(*) AS total FROM TableA t LEFT JOIN TableB t1 ON (t1.A_ID = t.ID ) LEFT JOIN TableC t2 ON ( t2.ID = t1.ID ) LEFT JOIN TableB pre ON (pre.ID = t2.prework_id)