add distinctOn for LessJoins

This commit is contained in:
Александр Савельев 2025-11-21 00:52:12 +03:00
parent 30e79f3287
commit 3dd943141f

View file

@ -6,15 +6,14 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.jooq.Condition;
import org.jooq.Field;
import org.jooq.*;
import org.jooq.Record;
import org.jooq.SelectConnectByStep;
import org.jooq.SelectForUpdateStep;
import org.jooq.SelectJoinStep;
import org.jooq.SelectLimitStep;
import org.jooq.SelectOnConditionStep;
import org.jooq.SelectSelectStep;
import org.jooq.Table;
import org.springframework.util.CollectionUtils;
@ -68,8 +67,9 @@ public class LessJoinsDao extends CustomCoalesceDao {
));
List<Field<?>> fieldList = convertEntityColumnsToJooqFields(columns);
Field<?> mainPkField = QueryUtils.toJooqField(mainNodePkColumns[0], this.getDsl().dialect(), true);
SelectJoinStep<Record> selectStep = selectByJooqColumns(fieldList, fieldsEntityNames,
entitiesConditionsMap
entitiesConditionsMap, mainPkField
);
SelectConnectByStep<Record> joinStep = buildWhereStep(selectStep,
@ -84,9 +84,9 @@ public class LessJoinsDao extends CustomCoalesceDao {
}
private SelectJoinStep<Record> selectByJooqColumns(List<Field<?>> fieldList,
Set<String> fieldsEntityNames, Map<String, List<Condition>> entitiesConditionsMap) {
SelectSelectStep<Record> select = uniqueResult
? getDsl().selectDistinct(fieldList)
Set<String> fieldsEntityNames, Map<String, List<Condition>> entitiesConditionsMap, Field<?> mainPkField) {
SelectIntoStep<Record> select = uniqueResult
? getDsl().select(fieldList).distinctOn(mainPkField)
: getDsl().select(fieldList);
DefaultGraphNode mainNode = graph.getMainNode();
SelectJoinStep<Record> selectJoinStep = select.from(getTableWithAlias(mainNode));