Написание запроса select с использованием критериев запроса multiselect API - PullRequest
0 голосов
/ 10 марта 2020

У меня есть таблица «t» со столбцами a, b, name, id и «add» - это пользовательская функция в базе данных, которая принимает два целочисленных параметра и возвращает целое число «c».

Ниже приведен мой запрос на выборку.

  SELECT a,b, add(a,b) as c FROM myTable t where a = 1;

Класс MyPojo с тремя свойствами a, b, c.

public MyPojo(){
    private int a;
    private int b;
    private int c;
    //getter and setter.....
    constructor(int a,int b, int c){
      //initialization
    }
} 

MyEntity с 4 свойствами a, b , name, id

public MyEntity(){
    private int a;
    private int b;
    private String name;
    private String id;
    //getter and setter.....
    constructor(int a,int b, String name, String id){
      //initialization
    }
}

функция, реплицирующая вышеупомянутый запрос выбора с использованием запроса критериев

private List<MyClass> getListMyClass(int a){ 
           CriteriaBuilder builder = em.getCriteriaBuilder();
           CriteriaQuery<MyPojo > query = builder.createQuery(MyPojo .class);
           Root<MyEntity > config = query.from(MyEntity .class); 
           List<MyPojo > resultList  = null;
           Predicate predicate = builder.equal(config.get("a"), a);
           **query.multiselect(config.get("a"),config.get("b"),builder.function("add",Integer.class,config.get("a"),config.get("b"))).where(predicate);**
           resultList = sessionFactory.getCurrentSession().createQuery(query).getResultList();
           return resultList;  
}

Я хочу повторить тот же запрос выбора с использованием запроса критериев, но не могу выбрать "c ", которая является возвращением функции add (), поскольку она не является столбцом в таблице" t "

...