Predicates
Kotlin JDSL์ JPQL์ conditional expression์ ํํํ๊ธฐ ์ํด Predicate ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Logical operators
๋ ผ๋ฆฌ ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, ๋ค์ ํจ์๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
AND (and)
OR (or)
NOT (not)
path(Employee::name).eq("Employee01").and(path(Employee::nickname).eq("E01"))
and(path(Employee::name).eq("Employee01"), path(Employee::nickname).eq("E01"))
path(Employee::name).eq("Employee01").or(path(Employee::nickname).eq("E01"))
or(path(Employee::name).eq("Employee01"), path(Employee::nickname).eq("E01"))
not(path(Employee::name).eq("Employee01"))Parentheses
ํ์ฅ ํจ์๊ฐ ์๋ ์ผ๋ฐ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ผ๋ก ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ์ฐ์ฐ ์์๋ฅผ ์ํ ์๊ดํธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํ์ฅ ํจ์์ ๊ฒฝ์ฐ ์ฐ์ฐ ์์๊ฐ ๋ชจํธํด์ ์๊ดํธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
// ์ผ๋ฐ ํจ์: (Employee.name = 'Employee01' AND Employee.nickname = 'E01') or (Employee.name = 'Employee02' AND Employee.nickname = 'E02')
or(
path(Employee::name).eq("Employee01").and(path(Employee::nickname).eq("E01")),
path(Employee::name).eq("Employee02").and(path(Employee::nickname).eq("E02")),
)
// ํ์ฅ ํจ์: Employee.name = 'Employee01' AND Employee.nickname = 'E01' or Employee.name = 'Employee02' AND Employee.nickname = 'E02'
path(Employee::name).eq("Employee01").and(path(Employee::nickname).eq("E01")).or(path(Employee::name).eq("Employee02").and(path(Employee::nickname).eq("E02")))Comparison operators
๋น๊ต ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, ๋ค์ ํจ์๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
= (equal or eq)
<> (notEqual or ne)
> (greaterThan or gt)
>= (greaterThanOrEqualTo or ge)
< (lessThan or lt)
<= (lessThanOrEqualTo or le)
All or Any
ํจ์ ์ด๋ฆ ๋ง์ง๋ง์ all๊ณผ any๋ฅผ ๋ถ์ด๋ ๊ฒ์ผ๋ก subquery์ ๋ํ All๊ณผ Any ์ฐ์ฐ์ ํ ์ ์์ต๋๋ค.
Null
null ๋น๊ต ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, isNull()๊ณผ isNotNull()์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Like
like ๋น๊ต ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, like()์ notLike()๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Between
between ๋น๊ต ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, between()๊ณผ notBetween()์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
In
in ๋น๊ต ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, in()๊ณผ notIn()์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Exists
exists ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, exists()์ notExists()์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Empty
empty ์ฐ์ฐ์ ๋ง๋ค๊ธฐ ์ํด, isEmpty()์ isNotEmpty()์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Database function
DB ํจ์๋ ์ฌ์ฉ์ ์ ์ ํจ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด, KClass<Boolean>๊ณผ ํจ๊ป function()์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Custom predicate
์ปค์คํ
predicate๋ฅผ ๋ง๋ค๊ธฐ ์ํด, customPredicate()์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ง์ฝ customPredicate()์ ๋ง์ด ์ฌ์ฉํ๋ค๋ฉด ๋๋ง์ DSL์ ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํด๋ณด์ธ์.
Last updated