1

US の Distinct states を SQL から取得しようとしていますが、アラスカが 6 回来るように、Hibernate でその明確な機能が正しく動作しません (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();
4

1 に答える 1

1

データベースに 6 つの異なるアラスカ州があり、それぞれに異なる ID があり、個別の州を要求すると、もちろん 6 つの州が取得されます。これらは異なる ID を持っているため、区別されます。

個別の州名をロードできますが、StatesProvices インスタンスではなく、String インスタンスを取得します。

修正はおそらくデータをクリーンアップすることであり、特定の国に特定の名前を持つ複数の州がテーブルに含まれていないことを一意の制約で確認します。

于 2011-07-02T09:04:07.557 に答える