当前位置: 首页 > 知识库问答 >
问题:

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

羊渝
2023-03-14

我使用了MongoTem板的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个答案

乜华翰
2023-03-14

在我看来,这不可能以优雅的方式实现。在支持不同数据库的背景下,存储库的概念似乎更一般。

如果您需要完全的灵活性,您可以不使用spring生成的存储库功能,而使用自己的实现。还可以为存储库创建自己的基类,以帮助重用经常需要的函数。在Spring Data MongoDB中可以找到类org。springframework。数据mongodb。存储库。支持SimpleMongoRepository,可以用作起点。

另请参阅此线程中的答案:Spring Data的MongoTemboard和MongoRepository之间的区别是什么?

 类似资料:
  • 问题内容: 我正在使用该软件包在Go中编写Windows服务。 到目前为止,一切都很顺利,而且很容易上手,我喜欢它。 我已经编写了一些自动更新功能,并且希望该服务在完成更新后重新启动。 我尝试生成一个进程,该进程将使用来重新启动服务,但它会记录一条错误消息,该消息似乎与尝试在作为本地系统运行时尝试控制该服务有关。 更好的方法是,将服务设置为,效果很好! 唯一的麻烦是,似乎没有使用Go编程配置这些选

  • /home/hduser/bin/hadoop-2.9.0/share/hadoop/common/hadoop-common-2.9.0.jar/home/hduser/bin/hadoop-common-2.9.0/share/hadoop/common/hadoop-common-2.9.0-tests.jar/home/hduser/bin/hadoop-2.9.0/share/hadoo

  • 根据Go博客, 地图对于并发使用是不安全的:它没有定义当您同时读写地图时会发生什么。如果需要从并发执行的goroutines读取映射和向映射写入映射,则访问必须通过某种同步机制进行调解。(来源:https://blog.golang.org/go-maps-in-action) 有人能详细说明一下吗?跨例程的并发读取操作似乎是允许的,但是如果尝试读取和写入同一个键,并发读取/写入操作可能会生成竞争

  • 问题内容: 我想用JUnit测试以下方法: 坦白说,我想出的唯一一件事就是基本上将相同的逻辑复制到测试中。当然,这可以防止方法被意外破坏,但是听起来有点违反直觉。 有什么更好的方法来测试此方法? 问题答案: 在单元测试中,您可以更改属性的值: 然后,您可以测试/调用您的方法以使用断言检查其返回的内容。 为了更容易设置System属性并在测试完成时取消设置该属性(从而促进测试隔离,自我约束),可以使

  • 问题背景 之前做springboot项目在操作数据库方面一直在使用的是Mybatis,最近在查阅资料的时候接触到了SpringData JPA与SpringData JDBC,想问一下大佬们,这三个框架如何选型

  • 问题内容: 我正在使用Flask- SQLAlchemy,并且试图在父模型中编写一种混合方法,该方法返回其具有的子代数,因此可以将其用于过滤,排序等。这是一些精简的代码我正在努力: 我在这里遇到两个问题。首先,我不知道“ child_count(cls)”到底要返回什么,它必须是一个SQL表达式…我认为应该像 但我不确定。我遇到的另一个问题是,我无法从parent.py导入Child类,因此无论如