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