Hibernate 如何在querydsl中编写子查询?
我在我的项目中使用了querydsl、hibernate和spring数据jpa。我编写了这个本机查询,工作正常。但是如何在querydsl中编写这个查询呢Hibernate 如何在querydsl中编写子查询?,hibernate,spring-data-jpa,querydsl,Hibernate,Spring Data Jpa,Querydsl,我在我的项目中使用了querydsl、hibernate和spring数据jpa。我编写了这个本机查询,工作正常。但是如何在querydsl中编写这个查询呢 List<OpenChart> openChartList = (List<OpenChart>) getEntityManager() .createNativeQuery( "select * from (select * from open_chart order by id desc ) open_chart
List<OpenChart> openChartList = (List<OpenChart>) getEntityManager()
.createNativeQuery( "select * from (select * from open_chart order by id desc ) open_chart where user_id="+userId+" group by patient_chart_id order by id",OpenChart.class).getResultList();
我准备了一个示例,说明如何在与您描述的类似场景中使用子查询,希望您能提供帮助并为其实现提供依据:
SQLQuery sqlQuery = new SQLQuery(connection, PostgresTemplates.builder().quote().newLineToSingleSpace()
.printSchema().build());
ListSubQuery<Tuple> listSubQuery = new SQLSubQuery().from(QUsersPasswords.usersPasswords).orderBy(QUsersPasswords.usersPasswords.usuNummat.desc()).list(QUsersPasswords.usersPasswords.all());
QUsersPasswords qSubquery = new QUsersPasswords("subquery");
sqlQuery.from(listSubQuery.as("subquery")).limit(10);
sqlQuery.list(qSubquery.all());
你需要使用
从
2.1.13。子查询要创建子查询,请创建JPASubQuery实例,通过from、where等定义查询参数并使用
用于创建子查询的唯一或列表,该子查询只是类型安全的
查询的Querydsl表达式。“唯一”用于“唯一”
单一结果和列表用于列表结果
对于基于Hibernate的子查询用法,请使用HibernateSubQuery
相反
我不认为这个问题有资格被否决,而不是得到答案。我想使用querydsl转换这段代码,因为我在项目中使用了大部分querydsl。我搜索了querydsl子查询示例,但没有找到合适的示例。所以我把我的问题放在这里。谢谢。我正试图根据您的示例listSubQuery listSubQuery=new JPASubQuery.fromQOpenChart.openChart.orderByQOpenChart.openChart.id.desc.listQOpenChart.openChart实现。;QOpenChart QOpenChart=新的QOpenChart子查询;List openCharts=pageableQuerypageable.fromEntityPath listSubQuery.assubquery.Where QoPenchart.userId.EqualId.groupByqOpenChart.patientChart.id.orderByqOpenChart.id.asc.listqOpenChart;在第1行,我找不到任何all方法,在最后一行,它要求实体,其中listsubquery是元组列表exception@SantoshNarna,我的示例是用于本机查询的QueryDSL SQL。如果您需要一个对象,您应该使用QueryDSL JPA。例如,您的返回应该是ListSubQuery,而不是ListSubQuery。我不需要任何项目与querydsl jpa运行一些测试,对不起。
QEmployee employee = QEmployee.employee;
QEmployee e = new QEmployee("e");
query.from(employee)
.where(employee.weeklyhours.gt(
new JPASubQuery().from(employee.department.employees, e)
.where(e.manager.eq(employee.manager))
.unique(e.weeklyhours.avg())
)).list(employee);