Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 使用规范和谓词从数据库检索数据的条件查询_Spring Boot_Spring Data Jpa_Spring Data_Criteria_Specification Pattern - Fatal编程技术网

Spring boot 使用规范和谓词从数据库检索数据的条件查询

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

我有两个表(用户、车辆),我想编写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 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接口支持方法链接。有关如何设置条件查询子句和构建条件表达式的详细说明,请参阅本页下一节中的链接

你可以在这里找到更多的例子

当你找到答案时,记得贴上答案!:)