条件を使用して選択した列を持つエンティティを返す方法 質問する

条件を使用して選択した列を持つエンティティを返す方法 質問する

私は Hibernate をまったく使い慣れていません。HibernateList<User>の基準を使いたいのですが、ユーザー ID と名前のフィールドだけが入力されている必要があります。これは可能ですか? 次のようなクエリです:

SELECT user.id, user.name FROM user

よろしくお願いいたします。

ベストアンサー1

まさにこれが予測の目的です。次に例を示します。

  Criteria cr = session.createCriteria(User.class)
    .setProjection(Projections.projectionList()
      .add(Projections.property("id"), "id")
      .add(Projections.property("Name"), "Name"))
    .setResultTransformer(Transformers.aliasToBean(User.class));

  List<User> list = cr.list();

実際、「遅延プロパティフェッチ」のドキュメントを見ると、次のように明記されています。


「少なくとも読み取り専用トランザクションの場合、不要な列の読み取りを回避する別の (より良い?) 方法は、HQL または Criteria クエリの投影機能を使用することです。これにより、ビルド時のバイトコード処理が不要になるため、間違いなく推奨されるソリューションです。」


ちなみに、あなたも興味があるかもしれない関連する質問があります:Hibernate Query By Example と Projections

おすすめ記事