-
엔티티를 직접 사용하기JPA/JPQL 2023. 8. 9. 14:30
JQPL에서는 기본 SQL과 다르게 엔티티를 직접 넘길 수 있다. JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다.
엔티티 직접 사용 - 기본 키 값
[JPQL]
select count(m.id) from Member m // 엔티티의 아이디를 사용
select count(m) from Member m // 엔티티를 직접 사용
[SQL] (JPQL 둘 다 같은 SQL로 실행됨)
select count(m.id) as cnt from Member m
엔티티를 파라미터로 전달
String jpql = "select m from Member m where m = :member"; Member findMember = em.createQuery(jpql, Member.class) .setParameter("member", member) .getSingleResult();
식별자를 직접 전달
String jpql = "select m from Member m where m.id = :memberId"; Member findMember = em.createQuery(jpql, Member.class) .setParameter("memberId", member.getId()) .getSingleResult();
외래 키 값을 사용
String jpql = "select m from Member m where m.team = :team"; List<Member> members = em.createQuery(jpql) .setParameter("team", teamA) .getResultList();
m.team은 db 입장에서 외래키이기 때문에 위의 에제처럼 식별자로 사용할 수 있다.