我使用spring-data-mongodb和querydsl-mongodb来执行更灵活的查询。Spring MongoDB + QueryDSL查询@DBRef相关对象
我的应用程序有用户和订单。 的用户可以有多个订单,所以我的模型看起来是这样的:
public class User {
@Id
private String id;
private String username;
//getters and setters
}
public class Order {
@Id
private String id;
@DBRef
private User user;
//getters and setters
}
正如你所看到的,有用户和订单之间具有一对多的关系。 将每个订单分配给一个用户,并将该用户存储在@DBRef public User用户属性中。
现在,让我们说一个用户有10,000个订单。
我如何使查询获得属于特定用户的所有订单?
我有OrderRepository:
public interface OrderRepository extends MongoRepository<Order, String>,
QueryDslPredicateExecutor<Order> {
}
我试过这个解决方案,但它不返回任何东西:
QOrder order = new QOrder("order");
Pageable pageable = new PageRequest(0, 100);
return userRepository.findAll(order.user.id.eq(anUserId), pageable);
我需要使用querydsl因为我想建立一个可以通过查询订单服务比userid更多的参数。例如,我想获取所有属于具有特定用户名的用户的订单。
我刚刚添加了一个相关的请求:https://github.com/querydsl/querydsl/pull/804 –
@TimoWestkämper我无法做出以下请求工作userRepository.findAll(order.user.username.eq (someUsername),可分页); 它工作正常与引用ID userRepository.findAll(order.user.id.eq(anUserId),可分页); – Philippe
@Philippe我有同样的问题。你有没有找到解决方案? –