Тот же запрос ничего не возвращает, если логическое значение в БД не равно 0 - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь получить единственное логическое поле от огромного объекта.Если has_Id в mysql db равно 0, приведенный ниже запрос JPA (упрощенное извлечение) работает нормально и возвращает правильное логическое значение «false».Точно такой же запрос не возвращает никакого результата, если has_Id == 1.

Я использую Mysql 5.7, eclipselink в качестве реализации JPA.

Данное поле имеет логический тип:TINYINT (1) NOT NULL DEFAULT '0'

- с другим типом конструкторов запросов (мы используем EclipseLink)

- используется тип Long & Integer вместо логического

- тот же запрос и параметры прекрасно работают в самом mysql.

try {
  TypedQuery<Boolean> query = buildQuery(Boolean.class,
  "select x.hasId from CCC x" + STD_VARS, null, new EqualFilter("tenantId", tenantId));
  return query.getSingleResult();}
catch (NoResultException e) {
   return null;
}

Ниже приведено тело buildQuery:

protected <R> TypedQuery<R> buildQuery(Class<R> type, String select, SortInfo sortInfo, String orderTemplate, JqlFilter... filters) {
        String stm = buildStatement(select, sortInfo, orderTemplate, filters);
        EntityManager em = emProvider.get();
        TypedQuery<R> query = em.createQuery(stm, type);
        return query;
    }

STD_VARS - шаблоны для предложений where и order, EqualFilter используется для их заполнения.

...