首页 文章

Spring MongoDB QueryDSL由@DBRef相关对象查询

提问于
浏览
3

我使用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
}

如您所见,用户和订单之间存在很多关系 . 每个订单都分配给用户,用户存储在@DBRef公共用户用户属性中 .

现在,假设用户有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更多的参数来查询订单 . 例如,我想获得属于具有特定用户名的用户的所有订单 .

1 回答

  • 1

    按ID搜索时无需 QueryDSL . 在 OrderRepository 中,创建一个接口方法:

    public List<Order> findByUser(String userId);
    

    请求示例: curl http://localhost:8080/orders/search/findByUser?userId=5a950ea0a0deb42729b570c0

    *我坚持如何查询订单,例如,来自某个城市的所有用户(一些mongo加入用户和地址) .

相关问题