我使用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我有同樣的問題。你有沒有找到解決方案? –