我有两个表(用户,车辆),我想编写条件查询以使用条件查询规范和谓词从两个联接表中检索数据。
select ur.id, count (ur.vehicle_FK) from user so
inner join VEHICLE vhe on vhe.user_id_FK = ur."ID"
group by ur.id, vhe.user_id_FK;
如何使用标准查询来实现它?
我有两个表(用户,车辆),我想编写条件查询以使用条件查询规范和谓词从两个联接表中检索数据。
select ur.id, count (ur.vehicle_FK) from user so
inner join VEHICLE vhe on vhe.user_id_FK = ur."ID"
group by ur.id, vhe.user_id_FK;
如何使用标准查询来实现它?
尝试这样的事情:
Criteria criteria = session.createCriteria(User.class, "user");
criteria.createAlias("user.vehicle_FK", "vehicle", Criteria.INNER_JOIN);
criteria.setProjection(
Projections.projectionList().add(Projections.groupProperty("user.id"))
.add(Projections.countDistinct("user.id")));
条件查询中的参数 以下查询字符串表示带有参数的 JPQL 查询: SELECT c FROM Country c WHERE c.population > :p 可以使用 JPA 条件 API 构建等效查询,如下所示:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Country> q = cb.createQuery(Country.class);
Root<Country> c = q.from(Country.class);
ParameterExpression<Integer> p = cb.parameter(Integer.class);
q.select(c).where(cb.gt(c.get("population"), p));
创建 ParameterExpression 实例 p 以表示查询参数。where 方法设置 WHERE 子句。如上所示,CriteriaQuery 接口支持方法链。有关如何设置条件查询子句和构建条件表达式的详细说明,请参阅本页下一部分中的链接。
您可以在此处找到更多示例 https://www.objectdb.com/java/jpa/query/criteria
找到答案后记得发布!:)