у меня есть этот кодзимуют отчетливый пункт не работает
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 раз, где он должен быть только один раз для этого я использую отчетливый выше, но его не работает. Где я ошибаюсь?
благодаря
Вы уверены, что у вас нет Аляски несколько раз в этом столе с несколькими идентификаторами? –
Строка «crit.setResultTransformer (Criteria.DISTINCT_ROOT_ENTITY)» неверна. Это говорит Hibernate, чтобы предоставить вам список всех StatesProvinces с уникальным идентификатором. Вам нужен список с уникальными именами. Измените код createCriteria на следующий: session.createCriteria (StatesProvinces.class) .setProjection (Projections.distinct (Projections.projectionList(). Add (Projections.property («name»), «name»))) .setResultTransformer (Transformers.aliasToBean (StatesProvinces.class)) .list(); –