1

次のような hql クエリがあります。

  return (long)Session.CreateQuery (" select count(*) " +
                                      "   from Files p " +
                                      "   join fetch p.Application a " +
                                      "  where a.Name = :AppName")
                        .SetParameter("AppName", application)                            
                        .UniqueResult();

Hibernate は次のような SQL クエリを作成します。

   select field1, field2, field3, count(*)

そのため、実行できません。

select count(*) が休止状態になってすべてのフィールドを一覧表示する理由と、それを防ぐ方法は?

ありがとう

4

1 に答える 1

2

私の意見では、この問題はFETCH、データベースから特定のエンティティの依存関係を取得するために通常使用される ' ' の使用に伴うものです。そのため、Hibernate は Application のフィールドを照会してオブジェクトを作成します。

アプリケーションに関連付けられたファイルのみをカウントする場合は、' JOIN FETCH' を ' INNER JOIN' (または単に ' JOIN') に変更します。唯一の照会フィールドはcount(*)その時です。

于 2013-01-18T11:40:50.453 に答える