Как получить значения подзапроса при использовании API Hibernate CriteriaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как получить значения подзапроса при использовании API Hibernate Criteria

Сообщение Anonymous »

Ниже приведен подзапрос для получения списка идентификаторов:

Код: Выделить всё

protected Long getIdList(
@NonNull final CriteriaBuilder rootBuilder,
@NonNull final CriteriaQuery rootQuery,
@NonNull final Pageable pageable) {
final HibernateCriteriaBuilder listBuilder = (HibernateCriteriaBuilder) rootBuilder;
final JpaCriteriaQuery listQuery = listBuilder.createQuery(Long.class);
final SqmSubQuery subQuery = (SqmSubQuery) listQuery.subquery(Tuple.class);
final SqmQuerySpec rootQuerySpec = ((SqmSelectStatement) rootQuery).getQuerySpec();
final SqmQuerySpec subQuerySpec = rootQuerySpec.copy(SqmCopyContext.simpleContext());
subQuery.setQueryPart(subQuerySpec);
final Root subRoot = subQuery.getRoots().iterator().next();
subQuery.multiselect(subRoot.get("id").alias("id"));

// listQuery.multiselect(listBuilder.count(listBuilder.literal(1))).from(subQuery);
// instead of counting the ids, I want to get them...
listQuery.multiselect(subRoot.get("id")).from(subQuery);

return entityManager
.createQuery(listQuery)
.setFirstResult(PageableUtils.getOffsetAsInteger(pageable))
.setMaxResults(pageable.getPageSize())
.getResultList();
}
К сожалению, это не работает, и я всегда получаю это сообщение об ошибке:

Код: Выделить всё

org.springframework.orm.jpa.JpaSystemException: Could not locate TableGroup
Любая подсказка будет оценена по достоинству. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... iteria-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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