我使用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 回答
按ID搜索时无需
QueryDSL
. 在OrderRepository
中,创建一个接口方法:请求示例:
curl http://localhost:8080/orders/search/findByUser?userId=5a950ea0a0deb42729b570c0
*我坚持如何查询订单,例如,来自某个城市的所有用户(一些mongo加入用户和地址) .