distinct子句在hibernate中无法正常工作

时间:2011-07-02 04:06:32

标签: hibernate distinct-values

我试图从我的SQL中获得美国的独特状态,但其独特的功能在Hibernate中无法正常工作,如Alaska将要出现6次(它在SQL中出现6次,但我只想要区别)

   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();

1 个答案:

答案 0 :(得分:1)

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

您可以加载不同的省名,但是您将获得String实例,而不是StatesProvices实例。

修复可能是为了清理您的数据,并确保使用一个唯一的约束条件,该表不会包含多个具有给定国家/地区特定名称的省。