2016-08-17 71 views
0

我試圖使用嵌套的Mongodb查詢,但它不起作用。 它類似於Spring data mongodb query for subdocument field使用彈簧數據在mongodb中嵌套查詢

但是這裏提到的建議不起作用。

請在下面找到我的文檔。

@Document 
public class Ticket { 

    @Id 
    private String id; 

    @DBRef 
    @CascadeSave 
    private Customer customer; 

    // getters and setters 
} 

@Document 
public class Customer { 

    @Id 
    private String id; 

    private String firstName; 

    // getters and setters 
} 

public interface TicketRepository extends MongoRepository<Ticket, String> { 

    public List<Ticket> findByCustomerFirstName(String firstName); 

    } 

我都嘗試findByCustomerFirstNamefindByCustomer_FirstName,但它不工作。有什麼建議麼 ?

回答

0

這些建議是正確的它應該工作...

官方文檔解釋了它,你做到了:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.query-methods.query-property-expressions

屬性表達式只能參考 管理實體的直接屬性,如如上例所示。在創建查詢 時,您已確保解析的屬性是託管域類的 的屬性。但是,您也可以通過遍歷嵌套屬性來定義約束條件。假設一個人的地址爲 ZipCode。在這種情況下

List<Person> findByAddressZipCode(ZipCode zipCode);

方法名稱創建 財產遍歷x.address.zipCode

只有一兩件事,從Customer刪除@Document和嘗試,Mongodb不支持連接查詢(I」米不知道現在它是否)...所以你的文件應該是Ticket,它必須有一個embbebed documentCustomer作爲內部對象,而不是在一個不同的文件。

+0

非常感謝您的回覆。我忘了提及用於客戶的@DBRef註釋。原因是因爲我想訪問獨立於票證的客戶。你能不能請建議任何替代方法 – Dev

+0

是的,它適用於內部文件:)但我正在尋找一種鏈接文件的方式 - – Dev