你好我被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,当用户没有客户时,此查询返回零条目,即使应返回这些条目。此客户已离开连接(修改后的弹簧数据有点允许连接提取字段)但是仍然会创建额外的交叉连接。任何想法如何写这样的查询?
答案 0 :(得分:2)
我希望user.customer遍历创建额外的连接。
以下查询应该有效
query.from(user)
.leftJoin(user.customer, customer)
.where(user.userType.in(userTypes).or(customer.userType.in(userTypes)));