Blazebit / blaze-persistence

Rich Criteria API for JPA providers
https://persistence.blazebit.com
Apache License 2.0
725 stars 84 forks source link

The generated SQL statement order by is incorrect #1894

Open MindaDai opened 5 months ago

MindaDai commented 5 months ago

Description

The generated SQL statement order by is incorrect PagedList<CasePageCloseResp> pagedList = factory .select( Projections.bean( CasePageCloseResp.class, qClose.closeResult, qClose.closeTime, qClose.verdictAmount, qClose.closeAmount, qCase.id, qCase.name, qCase.type, qCase.causeId, qCase.number, qCase.status, qCase.amount, qCase.lawsuitStatus, qCase.createTime, qCase.updateTime, qCase.director)) .from(qCase) .leftJoin(qClose) .on(qCase.id.eq(qClose.caseId)) .where(where) .orderBy(qCase.number.desc(), qCase.id.desc()) .fetchPage((int) pageable.getOffset(), pageable.getPageSize());

Expected behavior

ORDER BY CASE

    WHEN casepojo0_.number IS NULL THEN
    1 ELSE 0 
END,
casepojo0_.number DESC

Actual behavior

ORDER BY casepojo3_.numbercase WHEN IS NULL THEN 1 ELSE 0 END The 'number' property and 'CASE' need space

Steps to reproduce

Environment

Version: 1.6.11
JPA-Provider: Hibernate 5.6.15
DBMS: MYSQL 5.7
Application Server: jdk8

image

beikov commented 5 months ago

Hey and thanks for the report. Please provide a test case for this based on one of our quickstarts.