我怎麼能寫WHERE
子句,類似WHERE ? BETWEEN col1 AND col2
與QueryDSL?我知道我能寫的,而不是如下,QueryDSL如何寫「哪裏?col1和col2之間」
...
.where(mytable.col1.loe(constant), mytable.col2.goe(constant))
...
但使用BETWEEN
使查詢更具可讀性。
我使用QueryDSL 3.2.3。
UPDATE:
我結束了這樣的事情(A testcase which runnable via mvn test
):
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);
它工作過,但部分= ?
是多餘的。我想要更簡單的一件事:
SELECT ID, COL1, COL2 FROM MYTABLE WHERE (? BETWEEN COL1 AND COL2)
我不知道該怎麼寫。有什麼辦法通過QueryDSL來構造這個查詢嗎?
你可以[創建一個常量表達式](/問題/ 7661770 /如何對創建恆定數字值表達,在-querydsl),並使用其'between'方法。那樣有用嗎? – 2016-11-22 07:40:17
@Rhymoid嗨,謝謝你的信息。我剛剛調查過這個問題,並編輯了這個問題並添加了另一個問題。你有什麼想法嗎? –
@Rhymoid我找到了答案。感謝您的幫助! http://stackoverflow.com/a/40759823/3591946 –