没有找到能够从类型org.bson.types.ObjectId转换为int类型的转换器

时间:2014-09-17 18:22:41

标签: java mongodb spring-data-mongodb

我正在使用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")
    ]
}

2 个答案:

答案 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

进行注释