distinct子句在hibernate中工作不正常

distinct子句在hibernate中工作不正常,hibernate,distinct-values,Hibernate,Distinct Values,我试图从我的SQL中获得我们的不同状态,但它的不同功能在Hibernate中无法正常工作,比如阿拉斯加将出现6次(它在SQL中出现6次,但我只想要不同) statesprovisions statesprovisions=newstatesprovisions(); ArrayList AllState=新的ArrayList(); ArrayList states=新的ArrayList(); Session Session=sessionFactory.openSession(); Crit

我试图从我的SQL中获得我们的不同状态,但它的不同功能在Hibernate中无法正常工作,比如阿拉斯加将出现6次(它在SQL中出现6次,但我只想要不同)

statesprovisions statesprovisions=newstatesprovisions();
ArrayList AllState=新的ArrayList();
ArrayList states=新的ArrayList();
Session Session=sessionFactory.openSession();
Criteria crit=session.createCriteria(statesProvisions.class);
标准添加(限制条件(“国家”,国家));
crit.setResultTransformer(Criteria.DISTINCT\u ROOT\u实体);
List rsList=crit.List();

如果您的数据库中有6个不同的阿拉斯加省,每个省都有不同的ID,并且您要求不同的省,那么您当然会得到6个省。它们是不同的,因为它们有不同的ID

您可以加载不同的省名称,但会得到字符串实例,而不是StatesProvices实例


解决方法可能是清理数据,并使用唯一约束确保表中不包含多个具有给定国家名称的省份。

如果数据库中有6个不同的阿拉斯加省份,每个省份都具有不同的ID,并且您要求不同的省份,那么您当然会得到6个。它们是不同的,因为它们有不同的ID

您可以加载不同的省名称,但会得到字符串实例,而不是StatesProvices实例

修复方法可能是清理数据,并确保使用唯一约束,该表不会包含多个具有给定国家名称的省份

   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.add(Restrictions.eq("country", country));
    crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    List rsList = crit.list();