спящий пункт не работает - PullRequest
0 голосов
/ 14 января 2012

у меня есть этот код

StatesProvinces statesProvinces = new StatesProvinces();
ArrayList<StatesProvinces> allStates = new ArrayList<StatesProvinces>();
ArrayList<String> states = new ArrayList<String>();
Session session = sessionFactory.openSession();

Criteria crit = session.createCriteria(StatesProvinces.class);
crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

List rsList = crit.list();
for (Iterator it = rsList.iterator(); it.hasNext();) {
    statesProvinces = (StatesProvinces) it.next();
    allStates.add(statesProvinces);
    String state = statesProvinces.getState();
    states.add(state);
}
return states;

Результат, который я получаю, имеет одно и то же состояние, например, на Аляске 8 раз, где это должно быть только 1 раз, для этого я использую отчетливый выше, но это не работает .. Где я ошибаюсь?

спасибо

1 Ответ

0 голосов
/ 13 февраля 2015

код ниже даст вам список уникальных состояний:

        Criteria criteria = getHibernateSession().createCriteria(StatesProvinces.class);
        ProjectionList projectionList = Projections.projectionList()
                .add(Projections.property("state"));
        criteria.setProjection(Projections.distinct(projectionList));
        list = criteria.list();

Недостаток hibernate distict заключается в том, что мы должны использовать его только с проекциями, а в случае, если нам нужна вся сущность, мы должны добавить проекцию ко всем полям и использовать setReusultTransformer, как показано ниже:

criteria.setResultTransformer (Transformers.aliasToBean (StatesProvinces.class));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...