连接上的JPA条件多谓词

连接上的JPA条件多谓词,jpa,join,criteria-api,hibernate-criteria,having,Jpa,Join,Criteria Api,Hibernate Criteria,Having,我使用JPA criteria api是因为我的查询具有动态where值。我的条件需要像这样连接2个表: SELECT p.name, upl.score FROM place p left join place.userPlaceLike upl on p.place_id=upl.place_id AND upl.user_id=1 GROUP BY p.place_id HAVING count(place_id)>1 .createAlias("p.uerPlaceLi

我使用JPA criteria api是因为我的查询具有动态where值。我的条件需要像这样连接2个表:

SELECT p.name, upl.score 
FROM place p 
left join place.userPlaceLike upl on p.place_id=upl.place_id AND upl.user_id=1  
GROUP BY p.place_id 
HAVING count(place_id)>1
.createAlias("p.uerPlaceLike", "upl", JoinType.LEFT_OUTER_JOIN, Restrictions.eq("upl.userPlaceLike.idUser", 1))
经过一段时间的搜索,我们似乎目前无法用JPA标准将其归档。是这样吗

另一种解决方案是使用Hibernate准则,如下所示:

SELECT p.name, upl.score 
FROM place p 
left join place.userPlaceLike upl on p.place_id=upl.place_id AND upl.user_id=1  
GROUP BY p.place_id 
HAVING count(place_id)>1
.createAlias("p.uerPlaceLike", "upl", JoinType.LEFT_OUTER_JOIN, Restrictions.eq("upl.userPlaceLike.idUser", 1))
这确实有效,但现在我的另一个问题是,显然Hibernate标准不支持计数


我现在的选择是什么?我是否强制使用HQL?

您在哪里读到JPA Criteria API不支持操作数
GROUP BY[]have[]
?已经实现了,请查看的Javadoc,如果仍然不清楚,请返回一个更详细的问题,包括您失败的尝试和添加实体定义的相关部分。org.hibernate.Critera不支持计数。java.persistence.Criteria没有。但是org.hibernate.Critera支持多条件连接,而java.persistence.Criteria不支持。。。。(至少我是这么理解的)正确,JPA条件不支持多个条件上的连接,但这可以通过使用WHERE谓词条件轻松解决。不幸的是,我的查询需要使用这个额外的连接条件。因为我“需要”检索可能不在第二个表中的信息(所以我需要这些空值),如果我使用where,它将丢弃这些行