0
"_id" : ObjectId("5449567cdf97f277c50d1ce2")
이있는 문서가 있는데 null
을 findOne
을 사용하여 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"
}
문제를 해결하는 것 같지만'org.springframework.core.convert.ConverterNotFoundException : org.bson.types.ObjectId에서 int 형으로 변환 할 수있는 변환기를 찾을 수 없습니다. ' 그것은 무엇일까요? –
'new ObjectId (id)'대신'.is (id))'를 사용하십시오. –