我正在使用Spring数据和mongodb来使用此函数获取所有Products
:
@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")
]
}
答案 0 :(得分:2)
您正在尝试将ObjectId隐式转换为Integer:
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
。
答案 1 :(得分:0)
你的&#34;外键&#34;应使用@DbRef
进行注释