小编Mar*_*s L的帖子

Spring MongoDB + QueryDSL 通过@DBRef相关对象查询

我正在使用 spring-data-mongodb 和 querydsl-mongodb 来执行更灵活的查询。

我的应用程序有用户和订单。一个用户可以有多个订单,所以我的模型如下所示:

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
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,用户和订单之间存在多对关系。每个订单都分配给一个用户,该用户存储在@DBRef public User 用户属性中。

现在,假设某个用户有 10,000 个订单。

我如何进行查询以获取属于特定用户的所有订单?

我有订单存储库:

public interface OrderRepository extends MongoRepository<Order, String>,
        QueryDslPredicateExecutor<Order> {

}
Run Code Online (Sandbox Code Playgroud)

我尝试了这个解决方案,但它没有返回任何内容:

QOrder order = new QOrder("order");
Pageable pageable = new PageRequest(0, 100);

return userRepository.findAll(order.user.id.eq(anUserId), pageable);
Run Code Online (Sandbox Code Playgroud)

我需要使用 querydsl,因为我想构建一个可以通过比 userid 更多参数查询订单的服务。例如,我想获取属于具有特定用户名的用户的所有订单。

spring mongodb dbref querydsl spring-data-mongodb

5
推荐指数
1
解决办法
2398
查看次数

标签 统计

dbref ×1

mongodb ×1

querydsl ×1

spring ×1

spring-data-mongodb ×1