> For the complete documentation index, see [llms.txt](https://heunnajo.gitbook.io/jpa-basic/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://heunnajo.gitbook.io/jpa-basic/11.-2/undefined-2.md).

# 엔티티 직접 사용

1. 엔티티를 파라미터로 직접 전달하는 경우\
   **JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기 본 키 값을 사용한다!!!**

```java
String query = "select m From Member m where m = :member";
Member findMember = em.createQuery(query, Member.class)
                    .setParameter("member",member1)
                    .getSingleResult();//실제 엔티티가 담김.?
System.out.println("findMember = " + findMember);
```

![](/files/-MerTkskObJRkz6i-QUb)

2\. 식별자를 파라미터로 전달

오답 코드\
m은 엔티티(테이블인데) memberId 이름으로 셋팅한 파라미터 타입은 member.getId()로써 타입 불일치로 에러가 떴다!!!

```
String query = "select m From Member m where m = :memberId";
```

m은 Member 인데 파라미터 타입을 member.getId()로 셋팅했기 때문에 다음과 같은 에러가 발생

![Parameter value did not match expected type jpql.Member 에러](/files/-MerVBsZT0zot4C3apeZ)

정답 코드

```
String query = "select m From Member m where m.id = :memberId";
```

식별자로 파라미터 전달한 경우도 다음과 같이 동일하게 sql이 나오는 것을 확인할 수 있다!

![](/files/-MerV_p89p-RrIEYgm2x)

엔티티 직접 사용 - 외래 키 값\
외래키도 마찬가지로 엔티티를 직접 넣을 수도 있고 식별자를 넣을 수도 있다!\
아래 코드에서 **m.team**은 **Member** 객체(엔티티)  **외래키**인 "**TEAM\_ID**"이다.\
Member와 연관관계인 Team(team)

```
select m from Member m where m.team
```

(오류)teamA에 member가 2개 이상인데 getSingleResult()로 값을 가져오려고 해서 NoUniqueResultException 오류 발생

![](/files/-MerXFyGELochw2w8nIh)

**파라미터 team은 PK**이고, DB 입장에서 m.team은 FK로 매핑되어 있다.\
객체 입장에서는 member, team 모두 객체지만 DB입장에서는 PK, FK 모두 식별자이다.

```java
String query = "select m From Member m where m.team = :team";

List<Member> members = em.createQuery(query, Member.class)
                    .setParameter("team", teamA)
                    .getResultList();
for (Member member : members) {
     System.out.println("member = " + member);
}
```

엔티티를 전달했는데 FK(Team의 PK)로 작성된 SELECT 쿼리문 확인

![](/files/-MerYC-Fyx3Wa8gybztK)

![teamA의 member 들이 조회된 결과](/files/-MerZ3tMMA1es51uI47F)
