Spring boot 使用规范和谓词从数据库检索数据的条件查询
我有两个表(用户、车辆),我想编写criteria query,使用criteria query规范从db检索数据,并对这两个联接表进行谓词Spring boot 使用规范和谓词从数据库检索数据的条件查询,spring-boot,spring-data-jpa,spring-data,criteria,specification-pattern,Spring Boot,Spring Data Jpa,Spring Data,Criteria,Specification Pattern,我有两个表(用户、车辆),我想编写criteria query,使用criteria query规范从db检索数据,并对这两个联接表进行谓词 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 crit
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")));
试着这样做:
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查询: 从c国选择c国,c国人口>:p 可以使用JPA criteria 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));
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery q=cb.createQuery(Country.class);
根c=q.from(国家级);
ParameterExpression p=cb.parameter(Integer.class);
q、 选择(c).其中(cb.gt(c.get(“人口”),p));
创建ParameterExpression实例p以表示查询参数。where方法设置where子句。如上所示,CriteriaQuery接口支持方法链接。有关如何设置条件查询子句和构建条件表达式的详细说明,请参阅本页下一节中的链接
你可以在这里找到更多的例子
当你找到答案时,记得贴上答案!:) 条件查询中的参数 以下查询字符串表示带有参数的JPQL查询: 从c国选择c国,c国人口>:p 可以使用JPA criteria 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));
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery q=cb.createQuery(Country.class);
根c=q.from(国家级);
ParameterExpression p=cb.parameter(Integer.class);
q、 选择(c).其中(cb.gt(c.get(“人口”),p));
创建ParameterExpression实例p以表示查询参数。where方法设置where子句。如上所示,CriteriaQuery接口支持方法链接。有关如何设置条件查询子句和构建条件表达式的详细说明,请参阅本页下一节中的链接
你可以在这里找到更多的例子
当你找到答案时,记得贴上答案!:)