首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPQL,Where condition on Set with values

JPQL,Where condition on Set with values
EN

Stack Overflow用户
提问于 2016-08-11 19:30:46
回答 1查看 199关注 0票数 1
代码语言:javascript
复制
@Entity 
public class Person{

    private String firstName;
    private String lastName;

    @OneToMany(mappedBy="person" , fetch= FetchType.LAZY)
    private Set<Certificate> certificates;
}


@Entity 
public class Certificate{

    private String courseName;

    @ManyToOne 
    @JoinColumn(name="person_id")
    private Person person;

}

具有实体class(Person),该实体保存使用如上所述的@OneToMany映射的相关实体(证书)的集合(集合)。现在我得去取all Persons having certificate.courseName IN ("OCPJP", "OCPWCD").

在简单的SQL中,我的查询将如下所示。

代码语言:javascript
复制
select distinct p.firstName, p.lastName from Person p join Certificate c on p.Id = c.person_Id
where c.courseName IN ("OCPJP", "OCPWCD")

如何在JPQL中获得相似的输出?

EN

回答 1

Stack Overflow用户

发布于 2016-08-17 02:22:35

这样的查询可以写成如下:

代码语言:javascript
复制
SELECT DISTINCT(c.person) FROM Certificate c WHERE c.courseName IN (:coursenames)

完整示例:

代码语言:javascript
复制
List<String> courseNames = Arrays.asList("OCPJP", "OCPWCD");

List<Person> result = em.createQuery(
        "SELECT DISTINCT(c.person) " +
        "FROM Certificate c " +
        "WHERE c.courseName IN (:coursenames)", Person.class)
        .setParameter("coursenames", courseNames)
        .getResultList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38895164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档