2014-09-17 3 views
0

"_id" : ObjectId("5449567cdf97f277c50d1ce2")이있는 문서가 있는데 nullfindOne을 사용하여 id으로 가져 오려고 할 때 받게됩니다. 그것을 해결하는 방법?봄 데이터를 사용하여 mongodb에서 저장된 문서를 가져올 수 없습니다.

주요

public class MongoDBJDBC { 
    public static void main(String args[]){ 
     ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("spring/applicationContext.xml"); 

     ProductService productService = context.getBean(ProductService.class); 
     Product product = productService.get("5449567cdf97f277c50d1ce2"); // null here 
     } 
} 

서비스

@Service 
public class ProductService { 
    @Autowired 
    private ProductDao productDao; 
    @Autowired 
    private ProductPropertiesDao productPropertiesDao; 

    public void add(Product product) { 
     productDao.save(product); 
    } 

    public void update(Product product) { 
     productDao.save(product); 
    } 

    public Product get(String id) { 
     return productDao.get(id); 
    } 

DAO

@Repository 
    public class ProductDao { 

     @Autowired 
     private MongoOperations mongoOperations; 
public Product get(String id) { 
     return mongoOperations.findOne(Query.query(Criteria.where("id").is(new ObjectId(id))), Product.class); 
    } 
} 

엔 tity

@Document(collection = Product.COLLECTION_NAME) 
public class Product implements Serializable { 

    public Product() { 
    } 

    public static final String COLLECTION_NAME = "product"; 

    @Id 
    private String _id; 
    private String name; 
    } 

문서 MongoDB를 방금 id 대신 Criteria.where("_id").를 사용해야하므로, ID 필드 앞에 접두사에 밑줄을 추가

{ 
    "_id" : ObjectId("5449567cdf97f277c50d1ce2"), 
    "name" : "product" 
} 

답변

3

.

+0

문제를 해결하는 것 같지만'org.springframework.core.convert.ConverterNotFoundException : org.bson.types.ObjectId에서 int 형으로 변환 할 수있는 변환기를 찾을 수 없습니다. ' 그것은 무엇일까요? –

+0

'new ObjectId (id)'대신'.is (id))'를 사용하십시오. –

관련 문제