JPA + QueryDSL 의 MySQL환경에서 정말 간혹 rand() 함수를 사용해서 order by를 걸고 싶을때가 있다.
where(xxx)
.orderBy(NumberExpression.random().asc())
.limit(100000)
// 뭐 대충 이런...
MySQL은 안된다.
별도의 Template를 만들던가 해야 하는데 그냥 가볍게 사용할거면 아래와 같이 하자.
.where(
WhereClauseBuilder.builder().build()
).orderBy(
Expressions.numberTemplate(Double::class.java, "function('rand')").asc()
)
무겁게는 사용하지 말자.