DOT-узел без левой стороны - PullRequest
0 голосов
/ 28 ноября 2018

Я использую jinq версии 1.8.11 с hibernate версии 4.3. Использую фабрику сессий hibernate, а не менеджер сущностей.

Я пытаюсь выполнить следующий запрос:

JPAJinqStream<Routine> routineStream = stream.streamAll(getCurrentSession(), Routine.class);

    if (text.isPresent()) {
        final String searchText = text.get();
        routineStream = routineStream
                .leftOuterJoin(
                        (r, source) -> source.stream(NLSProperty.class),
                        (r, nls) -> nls.getVarKey().equals("routine.100.title")
                ).select(pair -> pair.getOne());"%" + searchText + "%")).select(Pair::getOne);
    }
    List<Routine> tp = routineStream.toList();

КогдаПеременный текст отсутствует, запрос работает и я получаю результаты.Когда присутствует переменная text, я получаю следующую ошибку:

java.lang.IllegalStateException: DOT node with no left-hand-side!

есть идеи, что я делаю не так?

У меня отладка jinq и генерируемый им запрос выглядит так:

SELECT A FROM de.etherapists.ehealth.model.routine.Routine A LEFT OUTER JOIN de.etherapists.ehealth.model.NLSProperty B ON B.varKey = 'routine.100.title';

Спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

Хорошо, поэтому я обновил версию hibernate до 5.1. Все еще использую фабрику сеансов, а не менеджер сущностей.

и код теперь:

if (text.isPresent()) {
        routineStream = routineStream
                .leftOuterJoin(
                        (routine, source) -> source.stream(NLSProperty.class),
                        (routine, nls) -> routine.getTitle().equals(nls.getVarKey())
                )
                .where(pair -> JPQL.like(pair.getOne().getShortCode(), "%" + text + "%")
                        || JPQL.like(pair.getTwo().getVarValue(), "%" + text + "%"))
                .select(Pair::getOne)
    }

, и он работает как чудо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...