WHERE
節はQueryDSLでWHERE ? BETWEEN col1 AND col2
のように書くことができますか?私はQueryDSL「WHERE?COL1とCOL2の間」
...
.where(mytable.col1.loe(constant), mytable.col2.goe(constant))
...
、代わりに次のように私は書くことができます知っている。しかしBETWEEN
を使用すると、クエリがより読みやすくなります。
私はQueryDSL 3.2.3を使用します。
UPDATE:それはとにかく動作しますが、一部= ?
が冗長である
final int constant = 10;
final QMyTable m = QMyTable.myTable;
final SimpleExpression<Boolean> operation = Expressions.operation(Boolean.class, Ops.BETWEEN,
Expressions.constant(constant), m.col1, m.col2);
// This yields:
// SELECT ID, COL1, COL2 FROM MYTABLE WHERE ((? BETWEEN COL1 AND COL2) = ?)
// bind => [10, true]
final MyTable actual = new JPAQuery(em).from(m).where(operation.eq(true)).uniqueResult(m);
:
私はこのような何か(A testcase which runnable via mvn test
)になってしまいました。私はもっとシンプルなものがほしいと思っています:
SELECT ID, COL1, COL2 FROM MYTABLE WHERE (? BETWEEN COL1 AND COL2)
私はそれを書く方法がありません。 QueryDSL経由でこのクエリを構築する方法はありますか?
あなたは(/質問/ 7661770 /ハウツー作成-定数値値式で-querydsl)[定数式を作成]とその 'between'メソッドを使用することができます。それは動作しますか? –
@Rhymoidこんにちは、ありがとうございました。私はちょうどそれについて調査し、質問を編集し、別の質問を追加しました。あなたはそれについて何か考えていますか? –
@Rhymoid答えを見つけました。ご協力ありがとうございました! http://stackoverflow.com/a/40759823/3591946 –