Mybatis Plus 中 MPJLambdaWrapper 中使用分页参数和排序时冲突的问题

发现在mysql下此方法没问题,如果是在sqlserver下 会提示 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效
原代码:

   Page page = new Page<>(1, 10);
    MPJLambdaWrapper<BfmMdmMaterialInventory> mPJLambdaWrapper = new MPJLambdaWrapper<>();
    mPJLambdaWrapper.select(BfmMdmMaterialInventory::getFactoryId, BfmMdmMaterialInventory::getStorageZoneId,
            BfmMdmMaterialInventory::getMaterialId, BfmMdmMaterialInventory::getInventoryStatus)
            .selectAs(BfmMdmFactoryTree::getCode, BfmTmStorageReportVO::getFactoryCode)
            .selectAs(BfmMdmFactoryTree::getName, BfmTmStorageReportVO::getFactoryName)
            .selectAs(BfmMdmStorageZone::getCode, BfmTmStorageReportVO::getStorageZoneCode)
            .selectAs(BfmMdmStorageZone::getName, BfmTmStorageReportVO::getStorageZoneName)
            .selectAs(BfmMdmMainMaterial::getCode, BfmTmStorageReportVO::getMaterialCode)
            .selectAs(BfmMdmMainMaterial::getName, BfmTmStorageReportVO::getMaterialName)
            .select(BfmMdmMainMaterial::getMaterialType, BfmMdmMainMaterial::getSpecificationModel, BfmMdmMainMaterial::getInventoryUnit)
            .selectAs(BfmTmCutterMasterData::getCuttingToolCode, BfmTmStorageReportVO::getCutterMasterDataCode)
            .selectAs(BfmTmCutterMasterData::getCuttingToolName, BfmTmStorageReportVO::getCutterMasterDataName)
            .selectSum(BfmMdmMaterialInventory::getQuantity)
            .leftJoin(BfmMdmFactoryTree.class, BfmMdmFactoryTree::getId, BfmMdmMaterialInventory::getFactoryId)
            .leftJoin(BfmMdmStorageZone.class, BfmMdmStorageZone::getId, BfmMdmMaterialInventory::getStorageZoneId)
            .leftJoin(BfmMdmMainMaterial.class, BfmMdmMainMaterial::getId, BfmMdmMaterialInventory::getMaterialId)
            .leftJoin(BfmTmMasterDataRelMaterial.class, BfmTmMasterDataRelMaterial::getMaterialId, BfmMdmMainMaterial::getId)
            .leftJoin(BfmTmCutterMasterData.class, BfmTmCutterMasterData::getId, BfmTmMasterDataRelMaterial::getCutterMasterDataId)
            .eq(BfmMdmMaterialInventory::getDeleteFlag, TableDeleteFlagEnum.FALSE.getFlag())
            .gt(BfmMdmMaterialInventory::getQuantity, 0)
            .eq(BfmMdmMainMaterial::getDeleteFlag, TableDeleteFlagEnum.FALSE.getFlag())
            .eq(BfmMdmFactoryTree::getDeleteFlag, TableDeleteFlagEnum.FALSE.getFlag())
            .eq(BfmMdmStorageZone::getDeleteFlag, TableDeleteFlagEnum.FALSE.getFlag())
            .eq(BfmMdmMainMaterial::getMaterialType, MdmConstant.MaterialType.TL.getCode())
            .eq(StringUtils.isNotBlank(factoryId), BfmMdmFactoryTree::getId, factoryId)
            .eq(StringUtils.isNotBlank(storageZoneId), BfmMdmStorageZone::getId, storageZoneId)
            .like(StringUtils.isNotBlank(materialCode), BfmMdmMainMaterial::getCode, materialCode)
            .like(StringUtils.isNotBlank(materialName), BfmMdmMainMaterial::getName, materialName)
            .like(StringUtils.isNotBlank(cutterMasterDataCode), BfmTmCutterMasterData::getCuttingToolCode, cutterMasterDataCode)
            .like(StringUtils.isNotBlank(cutterMasterDataName), BfmTmCutterMasterData::getCuttingToolName, cutterMasterDataName)
            .eq(StringUtils.isNotBlank(materialType), BfmMdmMainMaterial::getMaterialType, materialType)
            .like(StringUtils.isNotBlank(specificationModel), BfmMdmMainMaterial::getSpecificationModel, specificationModel)
            .eq(StringUtils.isNotBlank(inventoryStatus), BfmMdmMaterialInventory::getInventoryStatus, inventoryStatus)
            .groupBy(BfmMdmMaterialInventory::getFactoryId, BfmMdmMaterialInventory::getStorageZoneId,
                    BfmMdmMaterialInventory::getMaterialId, BfmMdmMaterialInventory::getInventoryStatus,
                    BfmMdmMaterialInventory::getUpdateTime)
            .groupBy(BfmMdmFactoryTree::getCode,BfmMdmFactoryTree::getName)
            .groupBy(BfmMdmStorageZone::getCode,BfmMdmStorageZone::getName)
            .groupBy(BfmMdmMainMaterial::getCode,BfmMdmMainMaterial::getName,
                    BfmMdmMainMaterial::getMaterialType,BfmMdmMainMaterial::getSpecificationModel,BfmMdmMainMaterial::getInventoryUnit)
            .groupBy(BfmTmCutterMasterData::getCuttingToolCode,BfmTmCutterMasterData::getCuttingToolName).orderByDesc(BfmMdmMaterialInventory::getUpdateTime) ;
               bfmMdmMaterialInventoryMapper.selectJoinPage(page, BfmTmStorageReportVO.class, mPJLambdaWrapper);

执行后报错。
修正后的代码为page中传入参数
page.addOrder(OrderItem.asc(“t5.cutting_tool_code”));

去掉orderByDesc(BfmMdmMaterialInventory::getUpdateTime) 这段代码 即可实现分页时同时使用排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值