5

Datatables jQuery プラグインを使用して、オーダーポジションのリストを表示しています。アプリケーションをデバッグしているときに、次の矛盾に遭遇しました。

データを取得する@Queryために、カスタム クエリに -Notationを使用しました。

@Query("select op from OrderPosition  " +
        "op where op.order.created >= ?1" +
        " and op.depot in ?2" +
        " and op.order.deliveryAddress.deliveryMode in ?3" +
        " and op.pickStatus in ?4 and op.order.id like ?5 ")
Page<OrderPosition> findOrderpositionsByFilterStatus(Date date, List<Integer>depots, List<DeliveryMode> deliveryModes, List<ArticleStatusType> pickStatus, String sSearch, Pageable p);

発生したエラーは次のとおりです。

81 個の Orderpositions テスト データのセットがあります。フロントエンドでは、いくつかの基準でフィルタリングできます。基準の 1 つがdeliveryMode(express|standard) です。一度に 10 件のエントリを表示します。express配信の合計数は 6 です。ページをページングすると、2 つのみexpressが表示されます。明示的にフィルタリングするexpressと、6つすべてが得られます。

ある種の順序付けを追加すると、たとえば次のようになります。

@Query("select op from OrderPosition  " +
        "op where op.order.created >= ?1" +
        " and op.depot in ?2" +
        " and op.order.deliveryAddress.deliveryMode in ?3" +
        " and op.pickStatus in ?4 and op.order.id like ?5 " +
        "order by op.order.id desc")
Page<OrderPosition> findOrderpositionsByFilterStatus(Date date, List<Integer>depots, List<DeliveryMode> deliveryModes, List<ArticleStatusType> pickStatus, String sSearch, Pageable p);

私はそれらの 6 つすべてを取得します。

何が私に質問をもたらしますか:

アノテーションなしのクエリ (ジェネリックfindAll()またはメソッド名からのクエリ) を使用する場合、Spring-Data-JPAは?order byを検出するときに -clause を内部的に使用します。pageableまたはその逆: ?order byを使用する場合、各カスタム クエリに -clauseを追加する必要がありpageableますか?

4

1 に答える 1

2

はい。OrderByさらに指定しない場合、Spring Data は(デフォルトの dess で) を使用します。ログを見てください:

SELECT t0.oid, t0.jpaversion, t0.amount, [...]
FROM [...]
WHERE [..] AND (t13.jpatype IS NULL OR t13.jpatype IN (?))
ORDER BY t0.oid DESC LIMIT ?, ?
于 2013-09-12T13:29:37.390 に答える