🔙뒤로가기

엔티티 직접 사용 - 기본 키 값

JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용


select count([m.id](<http://m.id/>)) from Member m //엔티티의 아이디를 사용
select count(m) from Member m //엔티티를 직접 사용
/* JPQL 둘다 같은 다음 SQL 실행
select count([m.id](<http://m.id/>)) as cnt from Member m
*/

엔티티를 파라미터로 전달

String jpql = “select m from Member m where m = :member”;
List resultList = em.createQuery(jpql) 
									 .setParameter("member", member)
									 .getResultList();

식별자를 파라미터로 전달

String jpql = “select m from Member m where m.id = :memberId”;
List resultList = em.createQuery(jpql) 
									 .setParameter("memberId", memberId)
									 .getResultList();

실행된 SQL

select m.* from Member m where m.id=?

엔티티 직접 사용 - 외래 키 값

엔티티를 파라미터로 전달

Team team = em.find(Team.class, 1L);
String qlString = “select m from Member m where m.team = :team”;
List resultList = em.createQuery(qlString)
									 .setParameter("team", team)
									 .getResultList();

식별자를 파라미터로 전달

String qlString = “select m from Member m where m.team.id = :teamId”;
List resultList = em.createQuery(qlString)
									 .setParameter("teamId", teamId)
									 .getResultList();

실행된 SQL

select m.* from Member m where m.team_id=?