spring - 返回的实体ID与数据库中保存的实际数据不同
问题描述
我正在使用 Spring Data JPA。当我检查 save(Entity) 方法返回的实体时,它与数据库中保存的实际 ID 不同。我正在使用 Oracle,而我的实体 ID 配置正在使用来自 Oracle db 的序列。
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_NAME")
@SequenceGenerator(name = "SEQ_NAME", sequenceName = "SEQ_1", allocationSize = 1)
private BigDecimal id;
示例场景:
- 使用 save(record1) 插入记录 1;
- 检查记录 1 的 ID = 1001
- 检查了db,id是1002。
除身份证外,其他数据均正常。
编辑:
我删除了代码中的所有其他逻辑,只留下保存部分来隔离问题。
解决方案
我刚刚发现每次插入记录时都会调用 SEQ1.nextVal 的数据库触发器。删除触发器并更改表以具有 DEFAULT SEQ1.nextVal 解决了我的问题。
推荐阅读
- amazon-web-services - Glue 以外的 AWS Athena 目录
- google-cloud-platform - 哪些是用于将对象复制到 Cloud Storage 存储分区的凭据
- git - Git 从终端使用正确的用户提交,但不是从 VS Code 提交
- php - È char 保存为 ? 在文件 php
- angular-calendar - 为什么 Angular 日历只显示纯文本和数字?
- python-3.7 - 是否有更快的方法来检查网站末尾的每个字符串
- laravel - laravel elasticsearch 只是从第一个模型中搜索
- javascript - 在正则表达式中使用动态数据
- postgresql - 包含 pgAdmin 4 v2.1 的 PostgreSQL 版本是什么?
- html - “在资源包中定义此标签”错误 sonarqube