如何编写JPA查询,其中参数是一个集合?

Jac*_*cob 5 java jpa jpql

假设以下课程,您如何找到Person具有特定电子邮件地址的课程?

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>();
}
Run Code Online (Sandbox Code Playgroud)

它就像做这个一样简单,还是有正确的方法?

select p from Person p where p.email=:email
Run Code Online (Sandbox Code Playgroud)

mus*_*iKk 10

那并没那么简单.JPQL IN为此提供运算符:

select p from Person p, IN(p.email) m where m = :email
Run Code Online (Sandbox Code Playgroud)

"旧"方式(读取类似SQL)将是:

select p from Person p join p.email m where m = :email
Run Code Online (Sandbox Code Playgroud)