繁体   English   中英

使用 Spring JPA 和 Hibernate 更新数据库分区上的记录时出错

[英]Error while updating records on database partitions using Spring JPA and Hibernate

我在更新 Hibernate 实体时遇到异常,以下是详细信息 -

我创建了如下表分区--case --case_active --case_inactive

- - - - - - - -脚本 - - - - - -

CREATE TABLE user_active ( CHECK (case_state <>'CLOSED') ) INHERITS (case); CREATE TABLE case_inactive ( CHECK (case_state ='CLOSED') ) INHERITS (case); ------------ Update Triggers------------- -- Trigger for - active case (closing) -- Move record from active_case to inactive_case CREATE OR REPLACE FUNCTION active_case_partition_trigger_fn() RETURNS TRIGGER AS $$ BEGIN IF (NEW.case_state = 'CLOSED' ) THEN INSERT INTO case_inactive VALUES (NEW.*); DELETE FROM case_active WHERE case_id = NEW.case_id; --RETURN NULL; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER active_case_partition_trigger BEFORE UPDATE ON case_active FOR EACH ROW EXECUTE PROCEDURE active_case_partition_trigger_fn();

-- 触发 - Inactive case (Reopening) -- 将记录从 inactive_case 移动到 active_case

CREATE OR REPLACE FUNCTION inactive_case_partition_trigger_fn() RETURNS TRIGGER AS $$ BEGIN IF (NEW.case_state <> 'CLOSED') THEN INSERT INTO case_active VALUES (NEW.*); DELETE FROM case_inactive WHERE case_id = NEW.case_id; update movement set active = true where document_id = new.case_id; --RETURN NULL; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER inactive_case_partition_trigger BEFORE UPDATE ON case_inactive FOR EACH ROW EXECUTE PROCEDURE inactive_case_partition_trigger_fn();

hibernate 实体“Case”更新异常(映射到“case”表)-

org.springframework.orm.jpa.JpaOptimisticLockingFailureException:行已被另一个事务更新或删除(或未保存的值映射不正确)

它与您的级联和 Class 图表有关,您正在保存一些无法自行保存的 object。

您应该检查您的级联和 class 图,但您也可以单独保存它们,例如在第一步保存用户,然后将该用户设置为案例 object 并保存案例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM