1

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」変数は単なる例ですか?

4

1 に答える 1

1

次のクエリは同様のセマンティクスを持つ必要があります

QAdminEntity adminEntity = QAdminEntity.adminEntity;
JPAQuery query = query.from(adminEntity)
    .where(adminEntity.id_city.eq(idCity))
    .orderBy(adminEntity.problems.size().asc())
    .limit(1);
于 2013-09-15T13:00:16.873 に答える