Я пытаюсь получить единственное логическое поле от огромного объекта.Если 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 используется для их заполнения.