Skip to main content
 首页 » 编程设计

java中找不到能够从 org.bson.types.ObjectId 类型转换为 int 类型的转换器

2025年02月15日10mengfanrong

我正在使用 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也是如此。