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

Spring Data JPA flush不会将更改保存到数据库

吕向阳
2023-03-14

我有下面的代码,首先检查记录,如果找到,删除该记录并刷新对数据库的更改。但是,当我调试时,我看到当调试器点击下一个代码块时,它没有反映对数据库的更改(最终股票=新股票();)。

@Transactional
public CommandDTO createOrUpdate(StockRequest request) {
    stockRepository.findByBrandUuidAndProductUuid(
                 request.getBrandUuid(), 
                 request.getProductUuid())
            .ifPresent(stock -> {
                stockRepository.delete(stock);
                stockRepository.flush();
            });

    final Stock stock = new Stock();
    if (request.isOutOfStock()) {
        stock.setBrandUuid(request.getBrandUuid());
        stock.setProductUuid(request.getProductUuid());
        stock.save(stock);
    }
    return CommandDTO.builder().uuid(stock.getUuid()).build();
}

那么,这种做法错在哪里呢?

共有1个答案

经福
2023-03-14

JPA不支持final字段。

对于不可变类,您可以使用两种替代解决方案。

>

更改只有getter的实体类字段。

 类似资料:
  • 问题内容: 我有一个具有表的应用程序,当您单击表中的项目时,它会使用其数据(FieldGroup)填充一组文本字段,然后您可以选择保存更改, 我想知道如何保存更改用户对我的postgres数据库进行的更改 。我正在为此应用程序使用vaadin和hibernate模式。到目前为止,我已经尝试做 我努力了 而且我也尝试过 最后两个给我以下错误 问题答案: 我已经弄清楚了如何对数据库进行更改,下面是一些

  • 我正试图从解析通过模拟器中提取一个PDF文件,并保存到我的桌面上,当我的应用程序上的一个按钮被点击时。问题是,无论我做什么,文件不会出现在桌面或其他任何地方。我正在对下载按钮使用此方法 无法将其保存到桌面。

  • 问题内容: 我们有一个带有JSON字段的模型,其中插入了用户标志。插入确实可以按预期工作,但是删除某些标志时,它们保留在字段中,并且更改不会持久保存到数据库中。 我们的模型中有以下方法: databasse是postgres,我们对字段类型使用SQLalchemy JSON字段方言。有什么建议吗? 问题答案: 如果您使用的是Postgres <9.4,则无法直接更新JSON字段。您需要 flag_

  • 我有一个使用JPA的Spring Boot应用程序,它有两个数据源,一个用于DB2,一个用于SQL Server。 当我尝试将实体保存到SQL Server时,不会抛出任何错误,但该实体不会持久化到数据库。我看不到日志中正在生成插入。 提前感谢 下面是我尝试保存实体所执行的代码@组成部分 下面是sql Server配置。 这是SQL Server存储库 公共接口BeercupMessageLogR

  • 问题内容: 如何获得WPF DataGrid将更改保存回数据库? 我已经将DataGrid控件数据绑定到一个DataTable对象,并使用一个非常简单的SELECT查询填充该表,该查询检索了一些基本信息。数据在控件中显示得很好。 但是,当我使用控件来编辑数据时,所做的更改不会被推回到数据库中。 有人知道我在想什么吗? 问题答案: 执行更新 当用户在DataGrid中编辑客户数据时,绑定的内存数据表

  • 问题内容: 我有两个网站,一个是TLS,一个不是,这两个都是针对同一客户端的,但是我需要这些网站彼此(并且只能彼此)共享 用户 , 订单 , 帐户 等的通用数据。 通常可以使用数据完成此操作,但是我显然不能在其他站点上使用它们,而且我发现我可以将会话数据存储在数据库(MySQL)中,而不是文件系统中。 我已经四处搜寻,发现此有用的指南以及此较旧但 有用的指南。我还发现了该指南,该指南具有最新的My