0
我有這個代碼的不同條款休眠不工作
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次對此,我上面用不同的相同的狀態,但其不工作..我錯了嗎?
感謝
你確定你在這個表中沒有多次阿拉斯加,有幾個ID? – 2012-01-14 09:48:05
「crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)」行是錯誤的。這就告訴Hibernate給你一個帶有唯一ID的所有StatesProvinces列表。你想要一個具有唯一名稱的列表。將您的createCriteria代碼更改爲以下內容:session.createCriteria(StatesProvinces.class).setProjection(Projections.distinct(Projections.projectionList()。add(Projections.property(「name」),「name」))) .setResultTransformer( Transformers.aliasToBean(StatesProvinces.class)) .list(); – 2012-01-16 02:26:13