2

次のように HQL クエリの結果を返そうとしています。

List<Parent> parents = 
currentSession().createQuery("from Parent order by count(children)").list();

そのため、リストは親が持つ子供の数によって順序付けられます。
ここで、子供はArrayList<Child>.

次のエラーが表示されます。

HTTP ステータス 500 - リクエストの処理に失敗しました。
ネストされた例外は org.springframework.dao.InvalidDataAccessResourceUsageException: Unknown column 'qualified' in 'order clause'; です。
SQL [該当なし]; ネストされた例外は org.hibernate.exception.SQLGrammarException: 不明な列 'qualified' in 'order clause' です

それは非常に単純なクエリのようで、正確に count メソッドの目的であるため、なぜ機能しないのかよくわかりません。また、「資格のある」列がどこから来ているのか、それが何を意味するのかわかりません。

4

2 に答える 2

1

私もこのような問題に遭遇しました.Googleで解決策を検索すると、あなたの質問がstatckoverflowに表示され、私のケースを参照できるようになりました.

Class AEntity{

    @OneToMany
    Set<BEntity> bList;

}

HQL:from AEntity order by bList.size

私たちのような誰かを助けたい.ありがとう.

于 2015-01-19T09:36:51.473 に答える
0

この場合、私が見ているように、それはほとんど標準的な SQL です。

"from Parent p left join p.children as pc group by p order by count(pc)"

が必要でしたが、追加の列である子の数を含むタプルを返すようになったため、エラーが発生しました。これは、結合されたテーブルの親部分のみを返したいという select 句を指定することで修正されました。ここで何が起こっていたのか正確にはわかりませんが、これは機能し、論理的で読みやすいクエリを作成します。

"select p from Parent p left join p.children as pc group by p order by count(pc)"

シンプル。

于 2013-09-14T08:53:59.517 に答える