oracle中遇到的bug

我在java中的添加方法中,添加角色名称,如下图:

img


这个表中的id为自增,我成功添加了一条数据了。
然后紧接着下面,调用第二个添加,如图:

img

参数中,get到了上一个方法中的id,在这里就是user_id, 在该表中,不是自增的,以及role_id(这个没问题,可以略过)
这个流程在mysql环境下执行,很顺利,但是在oracle环境下,在最后一步:

img

mybatisplus的保存方法,执行后直接报错:

img

然后我找到了一个帖子,猜测可能跟oracle的自增有关,因为我没有写一句话: useGeneratedKeys="false"
但是该帖子,是在xml或者dao中写的,而我用的是mybatisplus自带的方法,所以不知道该往哪里写,所以想问一下各位,该如何下手
,下面是这个帖子的链接
https://blog.csdn.net/u013709087/article/details/100705211?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165537184816781432997413%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165537184816781432997413&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-100705211-null-null.142^v17^control,157^v14^new_3&utm_term=+useGeneratedKeys%3Dfalse&spm=1018.2226.3001.4187

以上纯属我的猜测,如果各位有其他的想法,可以在下方留言,明天我来了会一一查看的,谢谢

在实体类的id上加上这个注解试试


@TableId(type = IdType.AUTO)
private Long id; 

----------------------------新方案-------------------------

由于 Oracle 不像 SQL Server 和 MySQL 有主键自增的设计,需要用创建序列或者触发器的方式实现主键增长,使用 Mybatis 时可以直接在 SQL 语句中使用序列,如果我们使用 Mybatis Plus 的通用 Mapper ,不自己写 SQL,这种情况下要实现主键自增就需要做一些额外的配置了:
1. 在application.yml 配置文件中增加

mybatis-plus:
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 0
    # Sequence序列接口实现类配置
    key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator

2. 实体类增加 @KeySequence 注解,@TableId 增加 type = IdType.INPUT

@Data
@Accessors(chain = true)
@TableName("yjk_user")
@KeySequence(value = "SEQ_YJK_USER", clazz = Integer.class)
public class User extends Model<User> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "user_id", type = IdType.INPUT)
    private Integer userId;

    @TableField("phone_number")
    private String phoneNumber;

    @TableField("password")
    private String password;

}

其中 @KeySequence 注解中的 value 值为你创建的对应这张表的序列名,clazz 的值是和表的主键类型对应的,如果表的主键是varchar2 类型但是需要从 sequence 中取值,可以直接将 clazz 的值设为 String.class

还要注意 type = Idtype.Input 一定不能用 type = Idtype.Auto