Как указать CriteriaQuery что бы использовал alias?

213
12 февраля 2017, 10:43
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");

В select не применяет alias к функции json_extract_path_text. В group by использует json_extract_path_text(t1.loc_name, ?)

Что сделать что бы применялся alias в select "json_extract_path_text(t1.loc_name, ?) ttlocname " и в group by использовался ttlocname ?

READ ALSO
Java. Работа с файлами

Java. Работа с файлами

Я твёрдо решил быть программистомНа данный момент изучаю Java SE

388
ошибка java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

ошибка java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Не работает подключение БД с сервлетомПомогите понять в чем проблема

397
ArrayList не клонируется

ArrayList не клонируется

Здравствуйте,

370
найти максимальное значение в ArrayList

найти максимальное значение в ArrayList

ArrayList состоит из объектов, каждый из которых имеет температуру и времяНеобходимо найти максимальное значение температуры за каждый день

529