querydsl объединяет несколько запросов в один

Допустим, у меня есть такой класс:

    @Entity
    public class Employee{
        private Long Id;
        private String jobTitle;
        private String firstName;

        ... getters and setters
    }

Можно ли выполнить один запрос и вернуть несколько наборов данных? Скажем, у меня есть подпись метода в моем репозитории, которая выглядит так:

public EmployeeQueryResult getEmployeeQuery(Long currentUserId, String jobTitle, List<String> names);

и я хочу использовать этот метод, чтобы получить текущего сотрудника по идентификатору, всех сотрудников с определенным названием должности и всех сотрудников, у которых есть имя:

public class EmployeeQueryResults{
    private Employee currentEmployee;
    private List<Employee> employeesWithJobTitle;
    private List<Employee> employeesWithName;

    ...
}

Я спрашиваю, можно ли использовать queryDSL для создания трех отдельных запросов и объединения их вместе, чтобы я мог использовать разбиение на страницы в объединенном списке.


person jensengar    schedule 09.05.2014    source источник


Ответы (1)


Я спрашиваю, можно ли использовать queryDSL для создания трех отдельных запросов и объединения их вместе, чтобы я мог использовать разбиение на страницы в объединенном списке.

Нет, с Querydsl это невозможно. Вы можете написать запрос таким образом, чтобы он возвращал экземпляры Employee, которые соответствуют хотя бы одному из ограничений, но результатом будет единственный список Employee.

person Timo Westkämper    schedule 11.05.2014
comment
но я думал, что это можно как-то сделать с профсоюзом. Я смотрел groups.google.com/forum/#!topic/querydsl/ Skb9Ps1bj2Q, но не могу решить, нужно это мне или нет. Я все еще пытаюсь понять, будет ли он делать то, что мне нужно. - person jensengar; 12.05.2014
comment
Или может быть что-то вроде этого: stackoverflow.com/questions/22923560/ - person jensengar; 12.05.2014
comment
Оба являются примерами SQL-запросов, вы используете более ограниченный JPQL, например. нет союза. - person Timo Westkämper; 12.05.2014