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

查询Dsl 交叉联接返回零个元素

濮阳赞
2023-03-14

你好,我被querydsl(hibernate 4.2.3和postgresql)卡住了。一般来说,它工作得很好,但是我有一个谓词是这样构建的:

QUser user = QUser.user;
....
predicate = and(predicate,
                user.userType.in(userTypes)
                .or(user.customer.userType.in(userTypes)));

现在的问题是用户并不总是有客户。Querydsl 生成交叉联接到客户表的 sql,当用户没有客户时,此查询将返回零个条目,即使应返回这些条目。此客户已保留联接(稍微修改了Spring数据以允许联接提取字段),但仍会创建其他交叉联接。任何想法如何写这样的查询?

共有1个答案

宫高义
2023-03-14

我希望user.customer遍历创建额外的连接。

以下查询应该可以工作

query.from(user)
     .leftJoin(user.customer, customer)
     .where(user.userType.in(userTypes).or(customer.userType.in(userTypes)));
 类似资料:
  • 我尝试在pyspark中(在Spark 1.5.0上)运行以下SQL查询:

  • jpaQuery.from(tableA,tableb)。(如何编写以下条件)。id=表格b。id() 如何使用查询dsl编写左向外连接?? 这是编写eq连接的示例代码 JPA query query = new JPA query(em); Q表A = Q表A.QTableB 表 B = QTableB 表 B query.from(tableA, tableB). where(tableA.i

  • 我正在尝试从查询中获取剩余的元组。在本例中,course_id3和4来自courses,因为用户admin@没有使用这些(他们只使用了1和2)。当我尝试左联接时,表已经很好地联接了,查询也正常工作... 但这将返回课程1和2,而不是3和4

  • 我想根据ModelB中的用户从modelA中获取数据。但这并不是强制要求我在ModelB中为每一个记录都有记录。所以当我使用下面的代码来获取数据时,它返回0条记录。 当我调试时,我发现QueryDsl将交叉联接。有人能告诉我如何修复这个问题吗?querydsl有没有办法添加左联接而不是交叉联接?下面是我的两个模型。

  • 问题内容: 我的样子 当我看起来像 我有一条路线 我的控制器看起来像 当我运行我的应用程序时,我看到console.log为 我在这里做错了什么? 问题答案: 是异步的。它立即返回一个空数组,并在响应到达时稍后从请求中添加结果- 来自http://docs.angularjs.org/api/ngResource.$resource: 重要的是要意识到调用$ resource对象方法会立即返回空引

  • 我希望为结果提供内容过滤。我的(为简洁起见而编辑)实体如下所示: 节点: 场景: 来源: 下面是我希望实现的筛选器的一个示例。 给定一个SourceTypes集合,我希望选择所有场景,这样每个场景都会被其中一个类型的源引用。我使用QueryDSL和以下谓词实现了这一点: 一系列这些谓词被组合起来给出一个整体查询。即使只选择一个SourceType,结果查询看起来也是这样: 我相信上面发生的是交叉连