diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt index 339c3ec..f427501 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt @@ -184,16 +184,10 @@ class ExplorerQueryRepository( val characters = ('A'..'Z').map { it.toString() } val rotatedChars = characters.drop(offset) + characters.take(offset) - val caseBuilder = Expressions.stringTemplate( - "CASE", - rotatedChars.withIndex().joinToString(" ") { - "WHEN {0} LIKE {1} THEN {2}".format( - member.email, - "'" + it.value + "%'", - it.index + 1 - ) - } - ) + val caseWhenClauses = rotatedChars.withIndex().joinToString(" ") { + "WHEN {0}.email LIKE '{1}%' THEN {2}".format(member, it.value, it.index + 1) + } + val caseExpression = Expressions.stringTemplate("CASE $caseWhenClauses END") val randomExpression = Expressions.numberTemplate(Double::class.java, "function('rand')").asc() @@ -205,7 +199,7 @@ class ExplorerQueryRepository( .and(member.isActive.isTrue) .and(auth.gender.eq(gender)) ) - .orderBy(caseBuilder.asc(), randomExpression) + .orderBy(caseExpression.asc(), randomExpression) .offset(0) .limit(10) .fetch()