CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Task> cq = cb.createQuery(Task.class); Root<Task> root = cq.from(Task.class); Join<Task, Attachment> atts = root.join("attachments", JoinType.LEFT); ParameterExpression locNameKey = cb.parameter(String.class, "ttlocname"); Expression taskTypeLocName = cb.function("json_extract_path_text", String.class, root.get("taskType").get("locName"), locNameKey); taskTypeLocName.alias("ttlocname"); cq.select(cb.construct( Task.class, root.get("id"), taskTypeLocName, cb.count(atts))); cq.groupBy(root, root.get("taskType").get("name"), taskTypeLocName); TypedQuery<Task> query = em.createQuery(cq); query.setParameter("ttlocname", "RU"); In select, it does not apply alias to the json_extract_path_text function. In group by uses json_extract_path_text (t1.loc_name,?)
What to do to use alias in select "json_extract_path_text (t1.loc_name,?) Ttlocname" and was ttlocname used in group by?