1

私はこれを解決しようとする日があります。

サブクエリに ORDER BY と LIMIT が必要です。これはネイティブ SQL です。

SELECT
    ope.idOperacion AS OperationID,
    est.nombre AS LastStatusName
FROM
    SSCM_4.Operaciones4 ope
INNER JOIN SSCM_4.BitacoraOperaciones4 bita
ON
    bita.operacion = ope.idOperacion
INNER JOIN SSCM_4.Estatus4 est
ON
    est.idEstatus = bita.estatus
WHERE
    ope.idOperacion = 54
AND bita.idBitacoraOperacion =
    (
        SELECT
            BO2.idBitacoraOperacion
        FROM
            SSCM_4.BitacoraOperaciones4 BO2
        INNER JOIN SSCM_4.Estatus4 EST2
        ON
            (
                BO2.Estatus = EST2.idEstatus
            )
        WHERE
            BO2.Operacion = ope.idOperacion
        ORDER BY
            EST2.Prioridad DESC,
            BO2.FechaOperacion DESC,
            BO2.idBitacoraOperacion ASC LIMIT 1
    )

しかし問題は、ORDER BY が JPQL のサブクエリでサポートされていないことです。

ビジネスロジックは次のとおりです。サブクエリは、主に操作ジャーナル履歴の行の優先度と日付によって定義された操作の最後のステータスを返す必要があるため、ORDER BY 句と LIMIT 句が必要です。

動的クエリ用の API を開発したため、JPQL でこれが必要です。これは、使用する必要がある JPQL 用のクエリビルダーです。

前もって感謝します。

4

1 に答える 1

1

JPQL はこれをサポートしていません。ネイティブ SQL クエリを使用するか、クエリを言い換えるか、複数のクエリを使用する必要があります。

サブクエリを変更して、orderby の代わりに max を使用する可能性があります。

サブセレクトに orderby サポートを追加するためにバグ/拡張をログに記録できますが、データベース固有であるため、制限は標準 SQL ではなく、JPQL の一部ではありません。

于 2011-04-06T12:48:35.487 に答える