これまで気付いたことがあったのですが、Condition
はプライベートスタティックファイナルになっていませんでしたが、私はもっと問題があるので、特に私がクエリをデバッグしている場合。 (私は3.7.3で、現在だが、私は3.3.xの中で前にこれを見てきた)ここに例があります:ORDER BYのデータと条件が呼び出されるたびにクエリ内で
final SelectJoinStep<Record13<String, String, String, String, String, BigDecimal, BigDecimal, BigDecimal, String, BigDecimal, String, String, Byte>> query = getSelect()
.from(getFrom(coConditions,
ConditionUtils.buildCondition(cortConditions, removeCortBySpeciality),
ConditionUtils.buildCondition(cosConditions, removeCosBySensitivity), tuConditions,
uaConditions, enableBlackMajik));
final SortField<?>[] orders = new SortField[] {DSL.inline(Integer.valueOf(2)).asc(),
DSL.inline(Integer.valueOf(1)).asc(), DSL.inline(Integer.valueOf(6)).asc()};
if (cosConditions.isPresent()) {
User.logger.error(builder.renderInlined(query.where(cosConditions.get()).orderBy(orders)));
return query.where(cosConditions.get()).orderBy(orders);
}
User.logger.error(builder.renderInlined(query.orderBy(orders)));
return query.orderBy(orders);
ここだけORDER BY
を示すロガー呼び出しからSQLの抜粋です:
order by
2 asc,
1 asc,
6 asc,
2 asc,
1 asc,
6 asc
別のコードスニペット書かれたジュースです:
order by
2 asc,
1 asc,
6 asc
そしてここでは、SQLサーバーに送信されORDER BY
のSQLスニペットですDBが見る何
order by
2 asc,
1 asc,
6 asc,
2 asc,
1 asc,
6 asc,
2 asc,
1 asc,
6 asc
:
User.logger.error(builder.renderInlined(query.orderBy(orders)));
User.logger.error(builder.renderInlined(query.orderBy(orders)));
User.logger.error(builder.renderInlined(query.orderBy(orders)));
return query.orderBy(orders);
まずロガーコール:
order by
2 asc,
1 asc,
6 asc
セカンドロガーコール:
order by
2 asc,
1 asc,
6 asc,
2 asc,
1 asc,
6 asc
サードロガーコールの問題を実証するためのトン:
今order by
2 asc,
1 asc,
6 asc,
2 asc,
1 asc,
6 asc,
2 asc,
1 asc,
6 asc,
2 asc,
1 asc,
6 asc
は、再び、私は実際に私が呼び出すたびCondition
が、それは私が私の条件を構築し、唯一の(静的たら、それらを参照するポイントに複製され、私のCondition
sの前に、行動のこの種を、気づきましたいくつかの楽しみのために作られたもの)。誰もがなぜこの動作を見ているのかを知っていますか?
私はこの全体の時間は、私はクレイジーではなかったことを見つけることがうれしいです! SQLサーバにクエリを実行して、実行中の時間を確認し、「待って...倍増することを覚えていない」という私の頭を傷つけます。 – DanO