JAVA JPA Predicate - получить то же значение столбца в условии ИЛИ - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь получить данные из таблицы TABLE_A, таблица Table_A содержит столбец BB_NUM.

  • Мне нужно написать выражение в JPA BooleanExpression,

  • Требуется для генерации ниже SQL-запроса из логики предикатов JPA:

    **Select * from TABLE_A where BB_NUM like 'GA22'OR BB_NUM like 'GA33';**
    
  • И эти GA22 GA33 приходят динамически, так что это где условие динамически добавляется.

  • Ниже кода есть запись для динамического создания условия условия в выражении предиката, но этот код не работает,

        boolean firstTime = true;
        str = "GA22GA33";
        BooleanExpression ent = null;
                        for (String array : str.split("GA")) {
                            if (StringUtils.isNotBlank(array)) {
                                if (firstTime) {
                                    ent = qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim());
                                    firstTime = false;
                                } else {
                                    ent.or(qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim()));
                                }
                            }
                        }
                        expressions.add(ent);
    

Код выше работает как SQL,

**Select * from TABLE_A where BB_NUM like 'GA22';**

надо работать

**Select * from TABLE_A where BB_NUM like 'GA22' or BB_NUM like 'GA33';**

1 Ответ

0 голосов
/ 23 января 2019

Попробуйте как:

else {
    ent = ent.or(qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim()));
}

Также вы можете заменить if (firstTime) на if (ent == null)

...