Ошибка при обновлении записей на разделах базы данных с использованием Spring JPA и Hibernate - PullRequest
0 голосов
/ 13 апреля 2020

Я получаю исключение при обновлении сущности 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();</p> <p>-- Trigger for - Inactive case (Reopening) -- Move record from inactive_case to active_case </p> <p>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();

Исключение при обновлении спящего объекта "Case" (который сопоставлен с "case" таблица) -

org.springframework.orm.jpa.JpaOptimisticLockingFailureException: строка была обновлена ​​или удалена другой транзакцией (или отображение несохраненного значения было неверным)

1 Ответ

0 голосов
/ 13 апреля 2020

это относительно ваших каскадов и вашей диаграммы классов, вы сохраняете некоторый объект, который не может быть сохранен сам по себе.

вы должны проверить свои каскады и диаграмму классов, но вы также можете сохранить их отдельно, например на первом шаге сохраните пользователя, а затем установите для этого пользователя объект case и сохраните регистр.

...