在 Spring boot Jpa 中将 @Id 添加到映射到没有主键列的表的实体是否可以?

问题描述

我已经开始处理旧版 oracle 数据库并使用 Spring boot Jpa 尝试在没有身份的表 (CHANNELMGR_REQUEST) 中插入新行:

enter image description here

此表有一个数字列 (CM_ISN),从逻辑上讲可能是 Identity 候选者,但由于某种原因我无法访问数据库

我发现一个现有序列 (CHANNELMGR_SEQ) 也用于为该 CM_ISN生成值。

enter image description here

所以我决定使用该序列并在我的等效 POJO 中添加一些注释,如下所示,并将序列映射到 CM_ISN 列。但不接触数据库

enter image description here

我的仓库是这样的:

enter image description here

在插入行时,成功调用序列但得到如下异常:

enter image description here

我的问题:

  1. 修改实体并将@Id 添加到不在等效表中的实体是否错误
  2. 我收到错误代码有什么问题?

PS:对不起,我放了图片而不是实际的源代码,原因是开发机器无法访问互联网。

解决方法

  1. 如果不是主键是错误的
  2. 使用 BigDecimal 而不是 Number