Как получить выражение по умолчанию из CriteriaBuilder внутри спецификацииJAVA

Программисты JAVA общаются здесь
Anonymous
Как получить выражение по умолчанию из CriteriaBuilder внутри спецификации

Сообщение Anonymous »

Я создаю поисковый запрос для области, будь то просто больше начальной границы, меньше конечной границы или между ними. Я провожу рефакторинг метода и заключаю операторы if в одно тело предиката спецификации. До этого в каждом операторе if возвращалась спецификация.
private Specification whereArea(Specification spec, ListingSearchDTO dto) {
return (root, _, builder) -> {
Path area = root.get("apartment").get("area");

if (dto.getM2From() != null && dto.getM2To() != null)
return builder.between(area, dto.getM2From(), dto.getM2To());
if (dto.getM2From() != null)
return builder.ge(area, dto.getM2From());
if (dto.getM2To() != null)
return builder.le(area, dto.getM2To());
return builder.; // return something here
};
}

Что мне следует вернуть в качестве результата по умолчанию? Кажется, я ничего не нашел об этом в документации.
Раньше код выглядел так:
private Specification whereArea(Specification spec, ListingSearchDTO dto) {
if (dto.getM2From() != null && dto.getM2To() != null)
return (root, _, builder) -> builder.between(root.get("apartment").get("area"), dto.getM2From(), dto.getM2To());
if (dto.getM2From() != null)
return (root, _, builder) -> builder.ge(root.get("apartment").get("area"), dto.getM2From());
if (dto.getM2To() != null)
return (root, _, builder) -> builder.le(root.get("apartment").get("area"), dto.getM2To());
return spec;
}

Вернуться в «JAVA»