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 –