2017-07-28 145 views
2

其他一些過程將文檔轉換爲蒙戈收集和下面是樣本數據MongoDB的QueryByExample findOne

{ "_id" : ObjectId("597b89c8da52380b04ee6948"), "_class" : "com.test.mongo", "clientId" : "CAQ123999", "isValid" : false, "isParent" : true } 
{ "_id" : ObjectId("597b89c8da52380b04ee6949"), "_class" : "com.test.mongo", "clientId" : "CAQ123999", "isValid" : false, "isParent" : true } 
{ "_id" : ObjectId("597b89c8da52380b04ee6950"), "_class" : "com.test.mongo", "clientId" : "CAQ123998", "isValid" : true, "isParent" : true } 
{ "_id" : ObjectId("597b89c8da52380b04ee6951"), "_class" : "com.test.mongo", "clientId" : "CAQ123997", "isValid" : true, "isParent" : false } 

我試圖抓住一個記錄ClientID的,使用QueryByExampleExecutor。

這裏是我的模型

package com.test.cfp.model; 
public class TFSModel { 

    private String clientId; 
    private boolean isValid; 
    private boolean isParent; 
    ... 

} 

這裏是構建示例代碼:

TFSModel tfs = new TFSModel(); 
      tfs.setClientId(CAQ123999); 
      tfs.setValid(false); 
      tfs.setParent(true);  
      ExampleMatcher matcher =ExampleMatcher.matching().withIgnoreNullValues().withIgnorePaths("_id","_class"); 
      Example<TFSModel > example = Example.of(tfs,matcher);   
      TFSModel oneTfsRecord = tflsRepository.findOne(example); 

這不是工作,下面是生成的查詢

findOne using query: { "isValid" : false , "isParent" : true , "clientId" : "CAQ123999" , "_class" : { "$in" : [ "com.test.cfp.model.TFSModel"]}} in db.collection: returns.tfs; 

很明顯,_class與mong中的不同o收藏。我如何告訴mongo在沒有_class的情況下構建一個查詢。我嘗試過使用IgororedPaths,但它不工作。

回答

1

MongoExampleMapper檢查探頭類型並根據MappingContext中的已知類型寫入類型限制。可分配給探針的類型包含在$in運營商中。

class One { 
    @Id String id; 
    String value; 
    // ... 
} 

class Two extends One { 
    // ... 
} 

One probe = new One(); 
probe.value = "firefight"; 

Example<One> example = Example.of(probe, ExampleMatcher.matchingAny()); 
{ 
    value: firefight, 
    _class: { $in : [ "com.example.One" , "com.example.Two" ] } 
} 

這種行爲無法使用.withIgnorePaths()作爲_class符不是域模型的一部分被改變。如果您認爲應該考慮這個問題,請在jira.spring.io中提出問題。

查看您提供的屬性與mongo集合提供的示例數據不匹配您的域類型,因此無法加載。

+0

謝謝@Christoph Strobl。我結束了使用MongoTemplate。我不確定它是否有效。無論如何,我會嘗試在jira.spring.io中記錄此信息。 – PKR