내가 좋아하는 SQL의 모습 만들고 싶어?Querydsl은 rand()를 지원하지 않습니까?</p> <pre>select b from Book b order by rand()</pre> <p>방법 Querydsl 쿼리에 해당 쿼리를 변환 :
Querydsl에서 지원하지 않습니까? 이 쿼리를 지원하는 방법을 알고 있다면 대답하십시오 ..;
감사합니다.
내가 좋아하는 SQL의 모습 만들고 싶어?Querydsl은 rand()를 지원하지 않습니까?</p> <pre>select b from Book b order by rand()</pre> <p>방법 Querydsl 쿼리에 해당 쿼리를 변환 :
Querydsl에서 지원하지 않습니까? 이 쿼리를 지원하는 방법을 알고 있다면 대답하십시오 ..;
감사합니다.
Querydsl SQL은 될 것 같지 않습니다, 나는 그것이 JPQL 지원됩니다 얼마나 잘되지 확신 그래서 귀하의 요청이
query.from(b)
.orderBy(NumberExpression.random().asc())
.list(b);
과 같이 표현 될 수
NumberExpression.random()
통해 지원 표준에서.
티모의 답변에 추가.
mysql을 사용하면 "ERROR : FUNCTION schema.random does not exist"오류가 발생합니다. 이는 mysql이 RANDOM 함수 대신 RAND 함수를 가지고 있기 때문입니다. 다음과 같이
public class MySQLJPATemplates extends JPQLTemplates {
public static final MySQLJPATemplates DEFAULT = new MySQLJPATemplates();
public MySQLJPATemplates() {
this(DEFAULT_ESCAPE);
add(Ops.MathOps.RANDOM, "rand()");
add(Ops.MathOps.RANDOM2, "rand({0})");
}
public MySQLJPATemplates(char escape) {
super(escape);
}
}
그리고 템플릿을 사용 :
DROP FUNCTION IF EXISTS RANDOM;
DELIMITER $$
CREATE FUNCTION RANDOM()
RETURNS DECIMAL(15,15)
DETERMINISTIC
BEGIN
DECLARE dist DECIMAL(15,15);
SET dist = RAND();
RETURN dist;
END$$
DELIMITER ;
을 또는 함께 랜드를 사용하는 임의의 기능을 수정 :이 문제를 해결하려면 당신도 다음과 같이 SQL에서 임의의 기능을 추가 할 수 있습니다
JPAQuery<Route> query = new JPAQuery<Route>(em, MySQLJPATemplates.DEFAULT);
query.from(b)
.orderBy(NumberExpression.random().asc())
.list(b);
'rand'란 무엇입니까? 어떤 RDBMS에서 이것을 실행하려고합니까? –
rand() 메소드는 RDBMS 기능입니다. 나는 mysql과 함께 사용했다. – xyzlast