使用 clase WHERE ... IN (list) 时出现问题

Trouble when using clase WHERE ... IN (list)

我在尝试使用 Hibernate 从数据库中检索时遇到了问题。我想要做的是从数据库中检索问题(使用 Hibernate 和 HSQLDB),其中标签 tag 包含在问题列表中。这是错误:

06-Jan-2017 19:43:26.021 WARN [http-apr-8080-exec-4] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions SQL Error: -5585, SQLState: 42585 06-Jan-2017 19:43:26.021 ERROR [http-apr-8080-exec-4] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions malformed numeric constant: .

此处查询:

Query query = session.createQuery("FROM Question q WHERE (:someTag) in (q.tagList) ORDER BY (q.creationDate) DESC").setParameter("someTag", tag).setMaxResults(amount);

这里是完整的方法:

public static List<Question> list(Tag tag, int amount){
     Session session = HibernateUtil.getSession();
     Query query = session.createQuery("FROM Question q WHERE (:someTag) in (q.tagList) ORDER BY (q.creationDate) DESC").setParameter("someTag", tag).setMaxResults(amount);
     return query.list();
}

如果您尝试检查列表是否包含某个元素,则需要使用 elements 子句,在这种情况下,查询将如下所示:

"FROM Question q WHERE :someTag in elements(q.tagList) ORDER BY (q.creationDate) DESC"