由于使用了触发器,导致hibernate5下新建、更新数据失败

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】OceanBase_CE-v4.1.0.0
【问题描述】用hibernate5进行连接,saveOrUpdate接口返回异常。异常信息如下:
Caused by: org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 2; expected: 1。该表使用了触发器向另一表进行数据同步。
【问题现象及影响】导致数据无法正常新建和更新。

【附件】
CREATE TABLE a_user (
ID_ int(11) NOT NULL AUTO_INCREMENT,
ORG_ID_ int(11) DEFAULT NULL,
REALNAME_ varchar(20) DEFAULT NULL,
PASSWORD_ varchar(32) DEFAULT NULL,
STATUS_ char(1) DEFAULT NULL,
PRIMARY KEY (ID_)
);

CREATE TABLE b_user (
ID_ varchar(64) NOT NULL,
REV_ int(11) DEFAULT NULL,
FIRST_ varchar(255) DEFAULT NULL,
LAST_ varchar(255) DEFAULT NULL,
EMAIL_ varchar(255) DEFAULT NULL,
PWD_ varchar(255) DEFAULT NULL,
PICTURE_ID_ varchar(64) DEFAULT NULL,
PRIMARY KEY (ID_)
);

DELIMITER $$
CREATE TRIGGER TG_INSERT_A_USER AFTER INSERT ON a_user
FOR EACH ROW
BEGIN
INSERT INTO b_user (id_, rev_, first_, pwd_) SELECT new.id_, 1, new.realname_, new.password_;
END;$$

insert into a_user(org_id_,realname_,password_) values(1,‘test’,‘123’);

原生mysql测试也是一样的报错。
把DEFINER = ‘root@%’ 去掉即可
应该是这个权限有问题

引号改一下就行,这个文本编辑器有问题。


测试的时候调整过引号了,这个是原生mysql的表现。

哦,我把脚本改了,删了definer。现在是影响条数的问题。

大哥,不是删了definer就行了。现在是影响条数的问题。

OB4.1最新版 和 4.2版本测试正常。
用户使用OB4.1低版本执行报错。
升级后进行观察