Как выбрать один столбец и сделать группировку по этому столбцу в JPA? - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно сделать что-то вроде

select city from users group by city;

Как это сделать с помощью Spring JPA? Может быть, технические характеристики? Как насчет чего-то вроде select в соответствии с переданным параметром?

List<Object> getValuesGroupedBy(String columnName);

Я пытался использовать спецификацию, вы можете сделать только

query.groupBy(root.get(column));

, и это действительно группирует по указанному столбцу.

Но когда вы пытаетесь сделать выбор,

query.select(root.get(column)).groupBy(root.get(column))

Это делает нереальным.

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

interface OnlyCity {
   String getCity();
}

Тогда мой JPA выглядит следующим образом:

List<OnlyCity> findAllBy();

И это выбирает только один столбец, что тоже нормально. Но как поместить туда спецификацию, чтобы я мог хотя бы выполнить операцию, описанную выше?

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете использовать что-то подобное, используя JPA. Конечно, мой код разработан для Ejb, но основные концепции те же.

@Entity
@Table
@NamedQuery(name="groupBy",query="SELECT c.city from City c group by c.city")
class City{
            String city;
            ....
            ....
        }



class CityManager{
            @PersistenceContext
            EntityManager manager

            public List<String> groupBycity()
            {
                return manager.createNamedQuery("groupBy").getResultList();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...