我有3个实体:问题,测试和类别。问题链接到他的测试,类别有她的测试的链接,我不是很好的hql查询,我尝试了几个他们不工作:"select q from Question q where q.test in (select c.tests from Category c where c.id=:categoryId)"
有以下错误:“无法提取ResultSet”
Query query = getEntityManager().createQuery(
"select q from Question q where q.test in (select c.tests from Category c where c.id=:categoryId)");
query.setParameter("categoryId", category.getId());
return query.getResultList();
答案 0 :(得分:0)
您正在使用EntityManager,因此通过调用createQuery
您实际上使用的是Java持久性查询而不是HQL。
要使用HQL,您需要获取Hibernate Session,您可以使用:
((Session)getEntityManager().getDelegate()).createQuery("yourquery")
看看是否能解决问题,我读过JQL在IN
条款中存在一些问题。
答案 1 :(得分:0)
如果relation是One to Many,否则使用elements()函数来测试事件。
String hql ="select q form Question q " +
"join q.category category " +
"where category.id = :id ";
return sessionFactory.getCurrentSession().createQuery(hql)
.setLong("id", categoryId)
.list();