我有以下HQL
查询:
return entityManager().createQuery(
"SELECT page FROM ProjectPage page"
+ " left join fetch page.categorySet as category "
+ " where page.id = :id "
+ " and category.parentCategory is null "
+ " and (category.status != :status_val) "
,ProjectPage.class).setParameter("id", id)
.setParameter("status_val", 1).getSingleResult();
问题是where子句中的条件失败,例如,查询返回状态为1的类别对象和parentCategory不为null的类别对象,尽管我指定了如上所述的约束!!
答案 0 :(得分:2)
如果您希望此查询返回基于ProjectPage
条件过滤掉categorySet
where
的{{1}}对象,那么您的期望是错误的。如果具有给定ID的ProjectPage
实例包含传递where
子句条件的任何类别,则会将作为整个对象返回。这是设计的,并且由于底层机制,缓存等原因而需要。如果您需要满足某些条件的类别对象,则必须为此编写单独的查询。