๋ด๊ฐ ์์ค ์ฝ๋์์ ์ถ๋ก ํ๋ ํ any()๋ ๋์ค์ ์ง๋ ฌํ ์ค์ ๋ณํ๋๋ ํน์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์์
์ ์ํํ๋ฉด
collectionProperty.any().prop1.eq("๊ฐ1").and(collectionProperty.any().prop2.eq("๊ฐ2")
์ด๋ ๊ฒ ํ๋ฉด ๋ ๊ฐ์ ๊ฐ๋ณ ํ์ ์ฟผ๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ด๊ฐ ์ํ๋ ๊ฒ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ด๋ค ์ ์ผ๋ก๋ any() ๋ณ์นญ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ต๋๋ค. ๋ฌผ๋ก JpaSubQuery๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ ๋ง ์ฅํฉํ๊ณ ๋ณด๊ธฐ ํํ๋ฏ๋ก ๋ ๊ฐ๋จํ ์ ์ด๋ฅผ ์ ํธํฉ๋๋ค.
์ฐ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก์์ ParamS๋ก ๋งค๊ฐ๋ณ์ํ๋ ์ ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฑ์ธ ์ ์๋ ํํฐ ํจ๋์ ์์ฑํ๊ณ ์ฑ์์ง ์ ์ด๋ฅผ ๋ฐฑ์๋๋ก ๋ณด๋ธ ๋ค์ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(๋ฐฉ๋ฌธ์๋ฅผ ๋์ฒดํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด). ์ด๊ฒ์ ์คํ ๋ฐฉ๋ฒ์ ์๋์ ์ผ๋ก ๋ถ๊ฐ์ง๋ก ์ ์ธ ์๋ก์ด ์กฐ๊ฑด์ ์ถ๊ฐํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์์ ๊ด์ ์์ ๋งค์ฐ ์ฐ์ํด ๋ณด์
๋๋ค.
ํ๋ก ํธ์๋์์ ํ์ ์ฟผ๋ฆฌ ์ ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์๊ฐ ์ํฉ์ด ์ฝ๊ฐ ์ฅํฉํด ๋ณด์ด๊ธฐ ์์ํ๊ณ ์ด๋ ๊ฒ ํ๋ ๊ฒ์ด ์๋ชป๋์๋ค๊ณ ๋๋๋๋ค.
์ด๊ฒ์ด ์ด๋ป๊ฒ ๊ตฌ๋ฌธ์ ์ผ๋ก ์ํ๋ ์ ์๋์ง ์ ์์ด ์์ต๋๊น?
ใ
)
๋ณ์นญ = ์๋ก์ด QEntity("๋ณ์นญ");
์ ์ด = collectionProperty.any(๋ณ์นญ, alias.prop1.eq().and(alias.eq()))
๋น)
๋ณ์นญ = ์๋ก์ด QEntity("๋ณ์นญ");
collectionProperty.any().as(๋ณ์นญ)
alias.eq().and(๋ณ์นญ....)
C) CollectionAnyVisitor์์ ๋์์ ๋ณ๊ฒฝํ๊ณ ํํ์ ํ์ ํธ๋ฆฌ์์ ์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ์ถ์ํฉ๋๋ค(์ํํ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด any()์ ๋ณ๋ ฌ๋ก ์ฝ๋ ์์ฑ์์ ๋ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๊ฐ๋ฐ์๋ค์๊ฒ ๊ฐ์ฅ ๋ช ๋ฐฑํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ A ๋ผ์ธ์ ๋ฐ๋ผ sth๋ฅผ ์ ํธํฉ๋๋ค. ๊ฐ ๋ฐฉ๋ฌธ์์์ ํ์ ์ฟผ๋ฆฌ์ where ์ ์ ์กฐ๊ฑด์ ๋ฃ๊ณ ํ์ํ ์กฐ์ธ์์ ๋ณ์นญ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋จํฉ๋๋ค.
+1
+1
+1
+1
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ใ )
๋ณ์นญ = ์๋ก์ด QEntity("๋ณ์นญ");
์ ์ด = collectionProperty.any(๋ณ์นญ, alias.prop1.eq().and(alias.eq()))
๋น)
๋ณ์นญ = ์๋ก์ด QEntity("๋ณ์นญ");
collectionProperty.any().as(๋ณ์นญ)
alias.eq().and(๋ณ์นญ....)
C) CollectionAnyVisitor์์ ๋์์ ๋ณ๊ฒฝํ๊ณ ํํ์ ํ์ ํธ๋ฆฌ์์ ์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ์ถ์ํฉ๋๋ค(์ํํ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด any()์ ๋ณ๋ ฌ๋ก ์ฝ๋ ์์ฑ์์ ๋ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๊ฐ๋ฐ์๋ค์๊ฒ ๊ฐ์ฅ ๋ช ๋ฐฑํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ A ๋ผ์ธ์ ๋ฐ๋ผ sth๋ฅผ ์ ํธํฉ๋๋ค. ๊ฐ ๋ฐฉ๋ฌธ์์์ ํ์ ์ฟผ๋ฆฌ์ where ์ ์ ์กฐ๊ฑด์ ๋ฃ๊ณ ํ์ํ ์กฐ์ธ์์ ๋ณ์นญ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋จํฉ๋๋ค.