1

テーブルのすべての主キーを取得してリストに入れる必要があります。これまでに見つけたどの方法でも、各レコードをオブジェクトとして取得できるため、主キーを個別に取得してリストに追加する必要がありました。

テーブルの主キーを取得してリストに追加する他の方法はありますか?

次のコードを使用すると、休止状態でオブジェクトが返されますが、主キーのリストを返してそれらを pk リストに格納する必要があります。

            List pk = new ArrayList():
            Criteria criteria = session.createCriteria(MyTable.class, "mytable");
            pk = criteria.list();

mytable が次の場合

id name value
1  a      z4
2  f      o2

pk リストは

[1,2]
4

3 に答える 3

4

必要なフィールドを返す HQL クエリを簡単に作成できます。

session.createQuery("SELECT mt.id FROM MyTable mt").list();

主キー フィールドに名前が付けられ、エンティティidであると仮定します。とMyTableで行うこともできます。CriteriaProjections

于 2013-07-29T02:59:11.607 に答える
4

一般に、それを達成する方法があります 1) Criteria API を使用する 2) HQL を使用する 3) ネイティブ クエリを使用する

上記の hibernate クエリの方法から、(1) と (2) の方が良いですが、3 番目の方法はデータベースの種類に依存します。

1) 基準 API の使用

Criteria criteria = session.createCriteria(MyTable.class, "mytable");
criteria.setProjection( Projections.projectionList().add( Projections.property("mytable.id"), "mytable.id"));

List<Long> ids=criteria.list();

2) HQL の使用

解決策はすでに説明されていますSotirious

3) ネイティブ クエリの使用

session.createSQLQuery(" SELECT mytable.id FROM MyTable mytable ").addScalar("ID","Hibernate.LONG").list();
于 2013-07-29T13:50:22.160 に答える