Выберите отдельные объекты по конкретному столбцу - PullRequest
3 голосов
/ 02 декабря 2011

У меня есть таблица с 4 столбцами: id, column_a и column_b

Мой первоначальный запрос

Session session = initialize my hibernate session;
Criteria criteria = session.createCriteria(MytableBean.class);
// add some constraints
return criteria.list()

И он возвращает некоторые результаты, такие как:

id  |  column_a  | column_b | 
1   |  A         | 1        | 
2   |  A         | 1        | 
3   |  A         | 2        | 
4   |  B         | 3        | 
5   |  B         | 3        | 

Но я не хочу несколько раз получать одну и ту же пару (column_a, column_b), даже если мне нужно много раз хранить ее в своей базе данных.

Итак, я ищу запрос, который возвращает результат, похожий на:

id  |  column_a  | column_b | 
    |  A         | 1        | 
    |  A         | 2        | 
    |  B         | 3        | 

В sql я бы использовал SELECT DISTINCT column_a, column_b FROM ....

Но я не могу использовать sql (и не хочу использовать hql, насколько это возможно).

1 Ответ

2 голосов
/ 02 декабря 2011

Следующее выполнит это. Список объектов [] будет возвращен.

    Criteria criteria = session.createCriteria(MytableBean.class);
    ProjectionList projList = Projections.projectionList();
    projList.add(Projections.property("column_a"));
    projList.add(Projections.property("column_b"));
    projList.add(Projections.groupProperty("column_a"));
    projList.add(Projections.groupProperty("column_b"));

    criteria.setProjection(projList);
    return criteria.list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...