无法在JPA查询中使用“IN”
问题描述:
我试图从0123A关系的JPA查询中获得结果。我有实体 -无法在JPA查询中使用“IN”
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
的条件,但只是为了检查集合中的单个对象。
任何指针?
相关信息 -
- 的Hibernate 4.3.5决赛
答
select distinct s from A s join s.tags t where t IN (:tags)
答
当使用在具有集合值参数,你不需要使用(...)
Query query2 = entityManager
.createQuery("select s from A s where s.tags IN :tags");
query2.setParameter("tags", findTags(keyword));
+0
试过了,它也给出了同样的错误。 – lazyprogrammer
+0
query2.setParameterList(“tags”,findTags(关键字)) – prsmax
工作。是因为'ManyToMany'映射而需要'JOIN'?因为IIRC,它在'ManyToOne'中不是必需的。 – lazyprogrammer
的确,它是必需的,因为标签是一个集合(一对多或多对多)。 –