无法在JPA查询中使用“IN”

时间:2015-07-20 14:00:00

标签: java hibernate jpa

我正在尝试从ManyToMany关系的JPA查询中获取结果。我有实体 -

 A.java
 @ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
 @JoinTable(name = "a_tags")
 private List<Tag> tags;

然后我尝试运行以下查询 -

Query query2 = entityManager
            .createQuery("select s from A s where s.tags IN(:tags)");
    query2.setParameter("tags", findTags(keyword));

但我一直收到以下错误java.sql.SQLException: No value specified for parameter 1

之前我使用过IN条件,但仅用于检查集合中的单个对象。

任何指针?

依赖关系信息 -

  • 休眠-4.3.5-最终

2 个答案:

答案 0 :(得分:3)

select distinct s from A s join s.tags t where t IN (:tags)

答案 1 :(得分:-1)

将IN与集合值参数一起使用时,您不需要使用(...)

Query query2 = entityManager
            .createQuery("select s from A s where s.tags IN :tags");
    query2.setParameter("tags", findTags(keyword));