2010-08-16 2 views
4

다음 클래스를 가정하면 특정 이메일 주소로 Person을 어떻게 찾을 수 있습니까?매개 변수가 설정된 JPA 쿼리를 작성하는 방법은 무엇입니까?

public class Person implements Comparable<Person> { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="id") 
    private long id = 0; 

    @OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, fetch=FetchType.LAZY) 
    private Set<String> email = new HashSet<String>(); 
} 

이 작업을 수행하는 것만 큼 간단하거나 적절한 방법이 있습니까?

select p from Person p where p.email=:email 

답변

7

쉽지 않습니다. 것

select p from Person p, IN(p.email) m where m = :email 

'오래된'방법 (SQL과 같은 읽기) : JPQL이에 대한 IN 연산자를 제공

select p from Person p join p.email m where m = :email 
0

는 SQL은 다음과 같이 보일 것입니다 :

WHERE email IN ('[email protected]', '[email protected]') 

불행하게도, 나는이 작업을 수행 할 수있는 쉬운 방법을 잘 모르는 것 같아요. 원시 SQL로이 작업을 수행하는 경우 두 단계로 수행해야합니다. 세트의 각 값에 대해 바인드 매개 변수 ?을 작성한 다음 세트를 반복하고 각 값을 바인드 매개 변수에 바인드하십시오.

저는 JPA에서 제대로 수행 할 수있는 방법을 모르고 있지만, 그렇게해야합니다.

관련 문제