select m from Member as m where m.age > 18
엔티티
와 속성
은 대소문자 구분을 한다. (Member, age)JPQL 키워드
는 대소문자 구분을 하지 않는다. (select, from, where)반환 타입이 명확할 때 사용한다.
// Member 타입으로 반환할게 명확하므로 TypedQuery
TypedQeury<Member> query = em.createQuery("select m from Member m", Member.class);
반환 타입이 명확하지 않을 때 사용한다.
// m.username은 String, m.age는 int이므로 반환타입이 명확하지 않다 -> Query
Query query = em.createQuery("select m.username, m.age from Member m");
결과가 하나 이상일 때, 리스트 반환 -> 결과가 없으면 빈 리스트 반환
결과가 없으면 javax.persistence.NoResultException 발생
결과가 둘 이상이면 javax.persistence.NonUniqueResultException 발생
TypedQuery<Member> query = em.createQuery(
"select m from Member m where m.username = :username",
Member.class);
query.setParameter("username", "member1");
List<Member> resultList = query.getResultList();