你好,我在 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 数据以允许连接获取字段),但仍然创建了额外的交叉连接。有什么想法如何编写这样的查询吗?
最佳答案
我希望 user.customer 遍历创建额外的联接。
以下查询应该有效
query.from(user)
.leftJoin(user.customer, customer)
.where(user.userType.in(userTypes).or(customer.userType.in(userTypes)));
关于hibernate - QueryDsl 交叉联接返回零个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190858/