http://www.querydsl.com/static/querydsl/3.2.1/reference/pdf/Querydsl_Reference.pdfのドキュメントを参照しています
そこに例があります
QDepartment department = QDepartment.department;
QDepartment d = new QDepartment("d");
query.from(department)
.where(department.employees.size().eq(
new JPASubQuery().from(d).unique(d.employees.size().max())
)).list(department);
以下のコードでテーブルを使用してクエリを実行しようとしました:
QAdminEntity tableAdmin = QAdminEntity.adminEntity;
JPAQuery query = queryFrom( tableAdmin ).where(
tableAdmin.id_city.eq( idCity ).and(
tableAdmin.problems.size().eq(
subQueryFrom( tableAdmin ).unique(
tableAdmin.problems.size().min()
)
)
)
);
return query.singleResult( tableAdmin );
そのコードは、「集約関数呼び出しはネストできません」のようなエラーを表示します。
postgres と querydsl に関する専門知識がなくて申し訳ありませんが、これは非常に簡単なはずです。
結果のクエリ:
select
adminentit0_.id_admin as id1_3_,
adminentit0_.ds_email as ds2_3_,
adminentit0_.ds_name as ds3_3_,
adminentit0_.ds_password as ds4_3_,
adminentit0_.ds_username as ds5_3_,
adminentit0_.id_city as id6_3_,
adminentit0_.id_permission as id7_3_
from
m_admin adminentit0_
where
adminentit0_.id_city=?
and (
select
count(problems1_.id_admin)
from
m_problem problems1_
where
adminentit0_.id_admin=problems1_.id_admin
)=(
select
min(count(problems3_.id_admin))
from
m_admin adminentit2_,
m_problem problems3_
where
adminentit2_.id_admin=problems3_.id_admin
) limit ?
ご覧のとおり、管理者 -> 問題の関係から、他の誰よりも問題の少ない管理者をリストしたいと思います。
どうすればこれを機能させることができますか?
追加の質問: サブクエリ
用に別の「QAdminEntity」フィールドを取得する必要がありますか、それとも「new QDepartment("d")」コードからの「d」変数は単なる例ですか?