当前位置: 首页 > 知识库问答 >
问题:

Querydsl,SELECT中的子查询

韶镜
2023-03-14

我将以下SQL作为本机查询运行,但我想知道是否有一种方法可以在JPAQuery中运行它,以便使用元组或类实例化。

SELECT a.*, 
      (SELECT exists (SELECT 1 FROM Table b WHERE b.a_code = a.code AND b.other =  ?)) AS bloquant 
FROM Table a

为了精确起见,我使用了别名而不是qtypes。

共有1个答案

萧琛
2023-03-14

我认为JPQL和JPA不支持select子句中的子查询,根据以下判断:

JPQL langref:https://docs.oracle.com/html/e13946_04/ejb3_langref.html#ejb3_langref_select_clause

The SELECT clause has the following syntax:

select_clause ::= SELECT [DISTINCT] select_expression {, select_expression}*

select_expression ::= single_valued_path_expression | aggregate_expression | 
identification_variable | OBJECT(identification_variable) | constructor_expression

constructor_expression ::= NEW constructor_name ( constructor_item {, 
constructor_item}* )

constructor_item ::= single_valued_path_expression | aggregate_expression

aggregate_expression ::= { AVG | MAX | MIN | SUM } ([DISTINCT] 
state_field_path_expression) | COUNT ([DISTINCT] identification_variable | 
state_field_path_expression | single_valued_association_path_expression)

作为一种解决办法,您可以在视图顶部执行本机查询或实体。为了保持合理的清洁,您可以创建一个只包含子查询(和主键)的视图,并在实体之间进行一个懒散的一对一映射。

请注意,(复杂的)谓词可能无法有效地推入视图查询,并且在select子句中执行子查询时通常不会非常有效。

 类似资料:
  • 我只想检查一下QueryDSL版本3.1.1。-是否仍然不可能与子查询连接,就像这里的答案所写的:JPQL/querydsl:join subquery and get aliased column

  • 问题内容: 我正在使用spring-data-jpa和querydsl(3.2.3) ,有一种情况是我根据用户文件管理器/输入创建谓词集。所有这些都来了。 我的简化模型如下所示: 现在,我正在努力的是这个查询: 因此,基本上我需要以类似的格式进行子查询,该格式将获取所有公司编号并将其设置为in()表达式。 我的spring- data存储库实现了反过来扩展和的工具。 我希望答案很简单,但是我对qu

  • 我正在使用spring-data-jpa和querydsl(3.2.3) 在一个场景中,我正在基于用户filer/input创建一组谓词。所有这些都来自。 我的spring-data存储库实现了,它又扩展了和。 我希望这方面的答案是直接的,但我对querydsl还是个新手,到目前为止还没有找到解决方案。

  • 问题内容: 将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。 我的查询是这样的: AND错误将显示如下: “无法在FROM子句中指定目标表’m’进行更新” 问题答案: 实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表) 或使用 JOIN

  • SQL可能如下所示: 如何将said SQL转换为querydsl? 编辑:因为它受到混淆:是的,这个例子是愚蠢的。不,我不想“优化”SQL。我所需要的只是一些生成完全相同(愚蠢的)SQL的QueryDSL代码。或者任何其他查询DSL代码生成任何类型的。如果可能的话。