我正在使用 Spring 数据和 mongodb 来使用此函数获取所有产品
:
@Repository
public class ProductDao {
@Autowired
private MongoOperations mongoOperations;
public List<Product> getAll() {
return mongoOperations.findAll(Product.class);
}
}
我的产品类别:
@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;
private DateTime date_time;
private int fk_properties;
private List<Integer> fk_parts;
}
错误:
org.springframework.core.convert.ConverterNotFoundException:
No converter found capable of converting from type org.bson.types.ObjectId to type int
如何解决?
更新:
我在 lib 文件夹中有 spring-core-4.1.0.RELEASE.jar
,其中应该包含所需的转换器。
更新2: 文档
{
"_id" : ObjectId("5449567cdf97f277c50d1ce2"),
"name" : "2014 ISF",
"auction_start" : ISODate("2014-12-08T12:00:00.000+0200"),
"auction_end" : ISODate("2014-12-08T14:00:00.000+0200"),
"listed" : "F",
"fk_product_property" : ObjectId("5229567cdf97f277c50d1ce2"),
"fk_parts" : [
ObjectId("5339567cdf97f277c50d1ce2"),
ObjectId("5349567cdf97f277c50d1ce2")
]
}
请您参考如下方法:
您正在尝试将 ObjectId 隐式转换为整数:
private List<Integer> fk_parts;
应该是:
private List<ObjectId> fk_parts;
另请注意 private int fk_properties;
被映射到什么都没有。如果你希望它映射到 fk_product_property
正如我怀疑的那样,它应该是:
private ObjectId fk_product_property
或
@Field("fk_product_property") private ObjectId fk_properties;
无论如何,该字段也应该映射到 ObjectId
也是如此。