java - 如何编写参数为集合的 JPA 查询?

标签 java jpa jpql

假设在下面的类(class)中,您如何找到具有特定电子邮件地址的 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>();
}

就这么简单吗,还是有什么好的方法?

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

最佳答案

没那么简单。 JPQL 为此提供了 IN 运算符:

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

“旧”方式(读取类似 SQL)是:

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

关于java - 如何编写参数为集合的 JPA 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492018/

相关文章:

java - 得到一个虚拟的 slf4j 记录器?

java - Spring java ResponseEntity<T> 具有多种参数类型

java - 有人可以告诉我我的 JPQL 查询出了什么问题吗?抛出 The basic mapping 's.surname' Cannot be use in junction with the = 运算符错误

JPA 托管实体的 Java 处理程序

java - hibernate 错误 : detached entity passed to persist

jpa - JPQL 或 JPA 标准构建器中的 DISTINCT ON

java - 在 JPA DTO 投影查询中加载子集合 DTO

java - BigQuery Java 客户端 - 如何查询外部(联合)表?

java - 如何创建一个总体 if 语句?如, "if this happens at any point in the program..."

java - 为什么 JPA 更新 OrderColumn 而不是在创建时设置它?