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

当主键没有数据时,@Version实体上的Spring数据JPARepository findById()将保留记录

冷正信
2023-03-14

我在中使用Spring Data JPA和hibernate作为springboot项目进行持久化,每当存储库(JPA CRUD存储库)上的方法findyById()没有为使用@版本注释进行乐观锁定的实体的主键返回任何数据时,它就会尝试将实体插入数据库。

我可以看到日志文件中生成的插入查询。

有人遇到过这样的问题吗?请帮助。

共有1个答案

微生青青
2023-03-14

我从你的解释中注意到的事情对程序来说似乎很奇怪,因为这不应该发生,你只是在做一个简单的查询,它不应该依赖于查询的输出。考虑一下你必须在非常大的应用程序中查看多少不同的情况,以避免导致问题的意外行为。

ORM(Hibernate等)的目标之一是确保应用程序毫无顾虑地满足您的需求。

现有应用程序可能存在导致此问题的配置。在我看来,要理解这个问题,请创建另一个具有最低要求的简单项目,然后再试一次。

 类似资料:
  • 我有父实体和子实体之间的和关系。 我有这样的孩子 保存此数据后,数据库看起来如下所示, 我的问题是,为什么child的主键是2而不是1?在子表中,主键可以是1,外键对父表的引用可以是1。当我再添加一个父项时,表如下所示, 是我做错了什么,还是这是我预期的行为?

  • 我有一个问题,Spring数据没有保存实体。应用程序逻辑如下: 另一个应用程序正在监听负载相当重的Kafka主题(每秒数十条消息)并将消息插入数据库中具有“NEW”状态的表中。 @调度方法加载一个具有“NEW”状态的实体列表,这些实体被一个接一个地传输到FixedThreadPool(20个线程),它们的状态设置为“PROCESSING”和一个saveAll方法调用同一个表。 这两种日志方法都显示

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

  • 我有一个关于将弱实体从e-r模型转移到sql表的问题。具体地说,我使用的是MySQL。 假设我有表hotels,其中每个酒店都有主键id,名为id。

  • 因为我是个新手,我的问题可能很简单。我搜索了一下,但没有找到一个令人信服的答案。在开发REST API时,API的目的是从现有的学生中创建一个玩家团队。POST方法,从现在开始,请求正文将保存请求正文中的学生ID(主键)。 在访问REST API时,请求主体是否可以包含表主键?

  • 我在Postgres中有两个表<code>foo 当我尝试使用此命令将数据从 复制到 时: 我得到一个错误: 错误:重复的键值违反了唯一约束“bar_pkey” 详细信息:键(id)=(1)已存在。 当表