这是一个简单的 pojo:
public class Description {
private String code;
private String name;
private String norwegian;
private String english;
}
请参阅以下代码,通过 spring MongoTemplate 将 upsert
应用于 MongoDb:
Query query = new Query(Criteria.where("code").is(description.getCode()));
Update update = new Update().set("name", description.getName()).set("norwegian", description.getNorwegian()).set("english", description.getEnglish());
mongoTemplate.upsert(query, update, "descriptions");
生成 Update
对象的行手动指定了 Item
类的每个字段。
但是,如果我的 Item
对象发生变化,那么我的 Dao 层就会中断。
那么有没有办法避免这样做,以便我的 Item
类中的所有字段都自动应用于更新?
例如
Update update = new Update().fromObject(item);
请注意,我的 pojo 没有扩展 DBObject
。
原文由 vikingsteve 发布,翻译遵循 CC BY-SA 4.0 许可协议
我遇到了同样的问题。在当前的 Spring Data MongoDB 版本中,没有这样的东西可用。您必须手动更新单独的字段。
然而,使用另一个框架是可能的:Morphia。
这个框架有一个 DAO 功能的包装器: https ://github.com/mongodb/morphia/wiki/DAOSupport
您可以使用 DAO API 来执行以下操作: