개요
- 상수가 필요하면
Expressions.constant(xxx) 사용한다.
- 문자 더하기는
concat 을 사용한다.
상수(constant), 문자 더하기(concat)
@Test
void constant() {
//given
//when
List<Tuple> result = jpaQueryFactory
.select(member.userName, Expressions.constant("A"))
.from(member)
.fetch();
//then
for (Tuple tuple : result) {
System.out.println("tuple = " + tuple);
}
// Console Log
// tuple = [member1, A]
// tuple = [member2, A]
// tuple = [member3, A]
// tuple = [member4, A]
}
@Test
void concat() {
//given
//when
List<String> result = jpaQueryFactory
.select(member.userName.concat("_").concat(member.age.stringValue()))
.from(member)
.where(member.userName.eq("member1"))
.fetch();
//then
for (String concat : result) {
System.out.println("concat = " + concat); // concat = member1_10
}
}
- Expressions.constant(xxx)
- 위와 같이 최적화가 가능하면 SQL에 constant 값을 넘기지 않는다.
- 상수를 더하는 것처럼 최적화가 어려우면 SQL에 constant 값을 넘긴다.
- concat()
- 문자가 아닌 다른 타입 들은
stringValue() 로 문자로 변환할 수 있다.
- 이 방법은 enum 을 처리할 때도 자주 사용한다.