问题的根源是 and() 方法。这个方法是 Querydsl 中用于连接多个谓词的方法。然而,在使用 and() 方法时,必须要注意一些细节。
以下是一个示例代码:
QCustomer customer = QCustomer.customer;
JPQLQuery query = new JPAQuery<>(entityManager);
//创建谓词
BooleanBuilder where = new BooleanBuilder();
where.and(customer.name.eq("John"));
where.and(customer.age.gt(25));
List result = query
.from(customer)
.where(where)
.fetch();
上面的代码中,我们使用 BooleanBuilder 类来创建谓词,并使用 and() 方法将多个谓词连接在一起。需要注意的是,在使用 and() 方法时,必须使用 BooleanBuilder 类的实例来调用方法。如果不这样做,结果将是错误的。
因此,在使用 Querydsl 和 and() 方法时,应该特别小心,确保正确地使用 BooleanBuilder 类的实例来调用方法。