2012-07-27 73 views
3

我有一個Spring MVC/Spring Data/Mongo DB應用程序。 我已經根據spring數據文檔設置了我的environement,並且我的倉庫工作正常(我可以使用謂詞執行查詢)使用Spring數據和QueryDSL在MongoDb查詢上投影

我想知道是否可以執行類型安全查詢(使用Spring Data和QueryDSL)同時進行投影(我只想要一個非常大的文檔的幾個字段)。

的QueryDSL文檔提供了對Hibernate的一個例子,但指出它可以在所有模塊QueryDSL Documentation做(但我一直沒能找到如何與蒙戈做)

這裏是對Hibernate的代碼片段

class CustomerDTO { 

    @QueryProjection 
    public CustomerDTO(long id, String name){ 
    ... 
} 

QCustomer customer = QCustomer.customer; 
JPQLQuery query = new HibernateQuery(session); 
List<CustomerDTO> dtos = qry.from(customer).list(new QCustomerDTO(customer.id, customer.name));  

任何想法?

回答

1

目前不支持。隨意爲它添加一張票到我們的Issue tracker

Querydsl的Lucene和Mongodb模塊僅支持來自查詢根的直接投影,但對於自定義投影,可以找出一些東西。

+0

問題[創建](https://github.com/mysema/querydsl/issues/205),謝謝你的建議。 – ufasoli 2012-07-30 07:01:10

+0

剛剛收到電子郵件,指出此功能現在已在QueryDSL框架中實現!好消息!! – ufasoli 2012-11-28 17:14:38

+0

這是否適用於嵌套投影? – btiernay 2014-02-19 01:23:35

0

我剛剛建立了一個投影像這樣:

Criteria c1 = Criteria.where("field.name").is("val") 
Criteria projection = Criteria.where("field").is(1) 
BasicQuery query = new BasicQuery(c1.getCriteriaObject(), projection.getCriteriaObject()) 
+0

這不是類型安全的,也不使用QueryDSL框架,而是使用標準的Spring Data對象。 – ufasoli 2013-08-30 07:31:52