์์ฑ ์ด๋ฆ์ด ๋์ผํ ๋ ๊ฐ์ ๊ฒฝ๋ก๊ฐ ์์ต๋๋ค(team.name ๋ฐ team.leader.name).
Projections.bean(QTeam.team, team.name, team.leader.name);
์คํจ
java.lang.IllegalArgumentException: Multiple entries with same key: name=team.leader.name and name=team.name
at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150)
at com.google.common.collect.RegularImmutableMap.checkNoConflictInBucket(RegularImmutableMap.java:104)
at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:70)
at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:254)
at com.mysema.query.types.QBean.createBindings(QBean.java:72)
at com.mysema.query.types.QBean.<init>(QBean.java:161)
at com.mysema.query.types.QBean.<init>(QBean.java:95)
at com.mysema.query.types.Projections.bean(Projections.java:63)
์ด๊ฒ๋ค์ด bean์ ์ด๋ป๊ฒ ์ ์ฉ๋๊ธฐ๋ฅผ ์ํ์ญ๋๊น?
ํ ์ด๋ฆ๊ณผ ํ ๋ฆฌ๋ ์ด๋ฆ๋ง ์ํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ์์ฑ์ null์ด์ด์ผ ํฉ๋๋ค. ๋น์ฐํ์ง ์๋์?
QBean์ ๊ณ ์ ํ ์์ฑ ํค๊ฐ ํ์ํ๋ฉฐ ์์์ ์ค๊ฐ ์์ฑ ์์ฑ์ ์ง์ํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ค์ฒฉ ์์ฑ์ ๋ํด MongoDB์ ํ๋ก์ ์ ์ ์ฌ์ฉํ ์ ์๊ณ Java bean์ MongoDB์ ๋ฌธ์๋ฅผ ํ๋ก์ ํธ์ ์ฌ์ฉํ ์ ์๋ค๋ ์๋ฏธ์ ๋๊น?
์ค์ฒฉ๋ ๋น์ ์ฑ์ธ ์ ์์ง๋ง ๋ช ์์ ์ผ๋ก ์ํํด์ผ ํฉ๋๋ค.
์
Projections.bean(Team.class, team.name,
Projections.bean(Leader.class, team.leader.name).as("leader"))
Leader
๊ฐ ์ค๊ฐ ๊ฐ์ฒด์ ์ ํ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
์๊ฒ ์ต๋๋ค. ๊ฐ์ฌ ํด์. ๋ณด๋ค ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ์ ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๊ฒ์ ๊ฐ์ ๋๋ ํ์๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค์ฒฉ๋ ๋น์ ์ฑ์ธ ์ ์์ง๋ง ๋ช ์์ ์ผ๋ก ์ํํด์ผ ํฉ๋๋ค.
์
Leader
๊ฐ ์ค๊ฐ ๊ฐ์ฒด์ ์ ํ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.