Hi,
We are migrating from 5.6.9 to 6.1.7 We are getting org.hibernate.sql.ast.SqlTreeCreationException: Could not locate TableGroup while executing the below criteria query
public Long countCriteriaResult(List<Predicate> predicates) {
try {
CriteriaBuilder builder = entityManager.getEntityManagerFactory().getCriteriaBuilder();
CriteriaQuery<Long> countQuery = builder.createQuery(Long.class);
Root<table1> actCount = countQuery.from(table1.class);
countQuery.select(builder.count(actCount));
countQuery.where(predicates.toArray(new Predicate[0]));
return this.entityManager.createQuery(countQuery.distinct(true)).getSingleResult();
} catch (NoResultException resultEx) {
LOG.warn("No result : {}", resultEx.getMessage() );
} catch (Exception ex) {
LOG.error("Other error: {}", ex.getMessage());
}
return Long.valueOf(0);
}
this method is called after another query that works well :
CriteriaBuilder builder = getRepository().getEntity().getEntityManagerFactory().getCriteriaBuilder();
CriteriaQuery<table1> criteriaQuery= builder.createQuery(table1.class);
Root<table1> actCom = criteriaQuery.from(table1.class);
List<Pair<String, From<?, ?>>> froms = new LinkedList<>();
froms.add(Pair.of("table1", actCom));
List<Predicate> predicates = new LinkedList<>();
predicates.addAll(ClientCriteriaConverter.getFilterPredicates(criteria, froms, builder));
criteriaQuery.where(predicates.toArray(new Predicate[0]));
CriteriaQuery.orderBy(ClientCriteriaConverter.getCriteriaOrdersFromCriteria(criteria, froms, builder));
criteriaQuery.select(actCom);
List<table1> items = getRepository().searchCriteriaPagedResult(page, pageSize, criteriaQuery);
Long records = getRepository().countCriteriaResult(predicates);
and with :
public List<Table1> searchCriteriaPagedResult(int page, int pageSize, CriteriaQuery<Table1> criteriaQuery) {
return this.entityManager.createQuery(criteriaQuery)
.setMaxResults(pageSize)
.setFirstResult((page-1) * pageSize )
.getResultList();
}