JAVA/JPA & Querydsl
Querydsl MathExpressions 이용해 Float 컬럼값 select
laughcryrepeat
2021. 3. 25. 15:27
Querydsl 에서 DB 데이터 값을 변환하여 select 하는 방법
DB의 값중 Float 값을 제대로 선택하려면
decimal 로 변환해서 찾는 방법이 있고,
SELECT * FROM your_table WHERE cast(my_float as decimal(5,1)) = 1.3;
leehblue.com/match-a-float-in-mysql/
round() 함수를 이용해 찾는 방법이 있는데
github.com/querydsl/querydsl/issues/458
Querydsl 에서는 MathExpressions 의 round() 함수를 사용하여
다음과 같이 디비의 Float 값을 변환한 값으로 select 가능하다.
private BooleanBuilder numbersEq(Float[] numbers) {
BooleanBuilder builder = new BooleanBuilder();
for(Float num: numbers) {
builder.or(MathExpressions.round(product.serialNumber,2).eq(num));
}
return builder;
}