2

您好,我对 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 数据以允许联接获取字段),但它仍然创建了额外的交叉联接。任何想法如何编写这样的查询?

4

1 回答 1

2

我希望 user.customer 遍历创建附加连接。

以下查询应该有效

query.from(user)
     .leftJoin(user.customer, customer)
     .where(user.userType.in(userTypes).or(customer.userType.in(userTypes)));
于 2013-08-12T17:59:48.560 回答