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

Spring data deleteBy查询不返回已删除的对象

伏子辰
2023-03-14

在Spring-data-mongob中,我们可以从存储库的查询方法中返回单个已删除的对象吗,如下所示

public interface MyRepository extends MongoRepository<MyObject, String>{
 Optional<MyObject> deleteByXAndY(String x, String y);
}

如果始终存在通过上述查询删除的单个文档。

我试过了,但它抛出了异常,比如不能将Long转换为MyObject。我认为只支持void、long或List或Stream。有什么方法可以实现我想要做的吗?

共有1个答案

叶翰林
2023-03-14

Spring不知道这个方法只能删除一个对象,所以它不允许您使用返回的单个结果来定义它。毕竟,你在这里定义的“合同”中没有保证只会有一个匹配项。您可能应该定义返回列表的方法,如果确定只有一个对象,则只需从列表中获取第一个对象。

 类似资料:
  • 当使用Firebase控制台时,可以看到所有文档和集合,甚至是路径中包含不存在的“文档”的子集合。 有没有可能,以某种方式,列出这些文件。既然控制台能做到,看来肯定有办法。如果有可能找到这些文档,是否可以创建一个查询来获取所有不存在但仅限于具有嵌套子集合的文档?(因为所有不存在的文档集将是无限的)

  • 我正在尝试删除实体,但未生成删除查询,并且控制台中没有显示错误: 注意:@Transactional来自springFramework包 编辑: 我的所有配置都是正常的,因为我已经有了merge和persist函数,没有任何问题,只是remove方法不生成任何sql查询,也不删除给定的实体。 编辑2: 我是这样获得entityManager的:

  • 问题内容: 当我尝试从数据库中删除条目时,使用 然后我可以执行以下操作: 1)如果该行存在于数据库中,则将执行两个SQL查询:一个选择,然后一个删除 2)如果数据库中不存在该行,则仅执行选择查询 但是同样,更新不是这种情况。无论是否存在数据库行,都只会执行更新查询。 请让我知道为什么这种行为用于删除操作。这不是性能问题,因为遇到了两个查询而不是一个查询? 编辑: 我正在使用hibernate3.2

  • 以下示例将演示如何使用Delte查询,在DBUtils的帮助下删除记录。 我们将删除表中的一条记录。 语法 其中, deleteQuery − 删除包含占位符的查询。 queryRunner − 对象删除数据库中的员工对象。 为了理解上述与DBUtils相关的概念,我们编写一个将运行更新查询的示例。创建一个示例应用程序。 更新在DBUtils入门应用中创建的文件。 编译并运行应用程序,如下所述。

  • Firebase查询返回此查询的值 该项由model类捕获 但是,返回null

  • 如何在Javafx TreeView中返回删除的treeitems? 当我做一棵这样的树。