Spring Data - 如何编写MongoRepository的findAndModify操作方法?

5
我已经使用MongoTemplate的findAndModify方法,如下所示:
 public Organization findAndModifyOrganization(Integer orgId, String name, Integer empId)
{
    Query query = new Query();
    query.addCriteria(Criteria.where("employees.id").is(empId));
    query.addCriteria(Criteria.where("id").is(orgId));

    Update update = new Update();
    update.set("employees.$.name", name);
    Organization org = mongoTemplate.findAndModify(query, update, new FindAndModifyOptions().returnNew(true), Organization.class);

    return org;
} 

//类结构

@Document
public class Organization {
    private Integer id;
    private List<Employee> employees;
}

@Document
public class Employee {
    private Integer id;
    private String name;
}

我希望使用Spring Data MongoRepository方法来完成上述操作。请告诉我如何使用MongoRepository方法更新员工的名称。

1个回答

1
据我所见,优雅地做到这一点似乎是不可能的。存储库的概念似乎更为通用,具有支持不同数据库的背景。
如果您需要完全灵活性,可以放弃由Spring生成的存储库功能,使用自己的实现。您还可以为存储库创建自己的基类,以帮助您重用经常需要的函数。在Spring-Data-MongoDB中,您可以找到类org.springframework.data.mongodb.repository.support.SimpleMongoRepository,可用作起点。
此外,请参阅此线程中的答案:Spring Data的MongoTemplate和MongoRepository之间有什么区别?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接