我正在使用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,因为我想构建一个可以按照多个参数查询订单的服务。例如,我想获取属于特定用户名用户的所有订单。